class Solution {    public boolean backspaceCompare(String S, String T) {        int len1 = S.length();        int len2 = T.length();        Deque<Character> stack1 = new LinkedList<>();        Deque<Character> stack2 = new LinkedList<>();        for (int i = 0; i < len1; i++) {            Character c = S.charAt(i);            if (!stack1.isEmpty() && c == '#') {                stack1.pollLast();            } else if (stack1.isEmpty() && c== '#') {                continue;            } else {                stack1.offerLast(c);            }        }        for (int i = 0; i < len2; i++) {            Character c = T.charAt(i);            if (!stack2.isEmpty() && c == '#') {                stack2.pollLast();            } else if (stack2.isEmpty() && c == '#') {                continue;            } else {                stack2.offerLast(c);            }        }        if (stack1.size() != stack2.size()) {            return false;        }        while (!stack1.isEmpty() && !stack2.isEmpty()) {            Character c1 = stack1.pollFirst();            Character c2 = stack2.pollFirst();            if (c1 != c2) {                return false;            }        }        return true;    }}
class Solution {    public boolean backspaceCompare(String S, String T) {        int len1 = S.length() - 1;        int len2 = T.length() - 1;        int skip1 = 0;        int skip2 = 0;        while (len1 >= 0 || len2 >= 0) {            while (len1 >= 0) {                if (S.charAt(len1) == '#') {                    ++skip1;                    --len1;                } else if (skip1 > 0) {                    --skip1;                    --len1;                } else {                    break;                }            }            while (len2 >= 0) {                if (T.charAt(len2) == '#') {                    ++skip2;                    --len2;                } else if (skip2 > 0) {                    --skip2;                    --len2;                } else {                    break;                }            }            if (len1 >= 0 && len2 >= 0) {                if (S.charAt(len1) != T.charAt(len2)) {                    return false;                }            } else {                if (len1 >= 0 || len2 >= 0) {                    return false;                }            }            --len1;            --len2;        }        return true;    }}