844. 比较含退格的字符串

给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

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

 

示例 1:

输入:S = "ab#c", T = "ad#c"
输出:true
解释:S 和 T 都会变成 “ac”。
示例 2:

输入:S = "ab##", T = "c#d#"
输出:true
解释:S 和 T 都会变成 “”。
示例 3:

输入:S = "a##c", T = "#a#c"
输出:true
解释:S 和 T 都会变成 “c”。
示例 4:

输入:S = "a#c", T = "b"
输出:false
解释:S 会变成 “c”,但 T 仍然是 “b”。
 

提示:

1 <= S.length <= 200
1 <= T.length <= 200
S 和 T 只含有小写字母以及字符 '#'。
 

解题思路:
1.将每一个字符串中的  #以及前面应该去掉的字符  去除掉---->采用栈
2.判断栈中的元素是否相同

  

//实现第1步:
public Stack get_NewStr(char[] ch) {
        Stack<Character> a = new Stack<Character>();
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] == '#') {
                if (!a.empty()) {
                    a.pop();
                }
                else if(a.empty()){
                    continue;
                }
                else
                    a.push(ch[i]);
            } else a.push(ch[i]);
        }

        return a;
    }

//实现第2步:
    public boolean backspaceCompare(String S, String T) {
        Stack s1, t1;
        s1 = get_NewStr(S.toCharArray());
        t1 = get_NewStr(T.toCharArray());
        if (s1.size() == t1.size()) {
            while (!s1.empty()&&!s1.empty()){
                if(s1.pop()!=t1.pop())
                    return false;
            } 
            //二者为空时,一定要进行判断        
            if(s1.empty()&&s1.empty())
                return true;

        }
        return false;

    }    

 

posted @ 2020-10-19 10:22  进击的小渣渣!!  阅读(86)  评论(0)    收藏  举报