比较退格的字符串

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;

    }

}

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值