比较含退格的字符串

给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 ‘#’ 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
力扣原题链接
在这里插入图片描述在这里插入图片描述

class Solution {
public:
    bool backspaceCompare(string S, string T) {
        int i = S.length() - 1, j = T.length() - 1;
        int skipS = 0, skipT = 0;

        while (i >= 0 || j >= 0) {
            while (i >= 0) {//指针从后往前找
                if (S[i] == '#') {
                    skipS++, i--;//继续前进遍历
                }
                else if (skipS > 0) {
                    skipS--, i--;//得到#的数目并用来跳过字母
                }
                else {
                    break;
                }
            }
            while (j >= 0) {
                if (T[j] == '#') {
                    skipT++, j--;
                }
                else if (skipT > 0) {
                    skipT--, j--;
                }
                else
                    break;
            }
            if (i >= 0 && j >= 0) {//此时i,j所指均是字母且无越界
                if (S[i] != T[j])
                    return false;
            }
            else {
                if (i >= 0 || j >= 0) {
                    return false;
                }
            }
            i--, j--;
        }
        return true;
    }
};
posted @ 2021-01-20 20:44  nepu_bin  阅读(40)  评论(0)    收藏  举报