比较退格的字符串

    技术2022-07-10  121

    844. 比较含退格的字符串

    难度简单131

    给定 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”。

    //思路:建立两个栈分别存储字符数组,如果是#且原栈不为空就弹栈,然后每一个进行比较。

    class Solution {

        public boolean backspaceCompare(String S, String T) {

            Stack<Character> stackS = new Stack<>();

            Stack<Character> stackT = new Stack<>();

            char[] s = S.toCharArray();

            char[] t = T.toCharArray();

            for(int i = 0; i <s.length; i++){

                if(s[i] != '#'){

                    stackS.push(s[i]);

                }else if(s[i] == '#' && !stackS.isEmpty()){

                    stackS.pop();

                }

            }

            for(int i = 0; i <t.length; i++){

                if(t[i] != '#'){

                    stackT.push(t[i]);

                }else if(t[i] == '#' && !stackT.isEmpty()){

                    stackT.pop();

                }

            }

            if(stackS.isEmpty() && stackT.isEmpty()){

                return true;

            }else if(!stackS.isEmpty() && stackT.isEmpty()){

                return false;

            }else if(stackS.isEmpty() && !stackT.isEmpty()){

                return false;

            }else{

                if(stackS.size() != stackT.size()){

                    return false;

                }else{

                    while(!stackS.isEmpty() && !stackT.isEmpty()){

                        if(stackS.pop() != stackT.pop()){

                            return false;

                        }

                    }

                }

                

            }

            return true;

        }

    }

    Processed: 0.010, SQL: 9