844. 比较含退格的字符串

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,请你判断二者是否相等。# 代表退格字符。

如果相等,返回 true ;否则,返回 false 。

注意:如果对空文本输入退格字符,文本继续为空。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/backspace-string-compare
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

import java.util.Scanner;

class Solution {
    public boolean backspaceCompare(String s, String t) {
        int p1 = s.length() - 1, p2 = t.length() - 1;
        int skip1 = 0, skip2 = 0;
        while (p1 >= 0 || p2 >= 0) {
            while (p1 >= 0) {
                if (s.charAt(p1) == '#') {
                    skip1++;
                    p1--;
                } else if (skip1 > 0) {
                    skip1--;
                    p1--;
                } else {
                    break;
                }
            }

            while (p2 >= 0) {
                if (t.charAt(p2) == '#') {
                    skip2++;
                    p2--;
                } else if (skip2 > 0) {
                    skip2--;
                    p2--;
                } else {
                    break;
                }
            }

            if (p1 >= 0 && p2 >= 0) {
                if (s.charAt(p1) != t.charAt(p2)) {
                    return false;
                }
            } else {
                if (!(p1 < 0 && p2 < 0)) {
                    return false;
                }
            }
            p1--;
            p2--;
        }

        return true;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(new Solution().backspaceCompare(in.next(), in.next()));
        }
    }
}
上一篇:树上倍增求树中任意两点


下一篇:P2392 kkksc03考前临时抱佛脚题解