0
点赞
收藏
分享

微信扫一扫

Java比较含退格的字符串leetcode

Villagers 2022-04-16 阅读 54
java算法

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

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

提示:

  • 1 <= s.length, t.length <= 200
  • s 和 t 只含有小写字母以及字符 '#'
  • class Solution {
        public boolean backspaceCompare(String s, String t) {
            int n = s.length() - 1;
            int m = t.length() - 1;
            int nskip = 0;
            int mskip = 0;
            while(n >= 0 || m >= 0){
                while(n >= 0){
                    if(s.charAt(n) == '#'){
                        nskip++;
                        n--;
                    }else if(nskip > 0){
                        nskip--;
                        n--;
                    }else if(s.charAt(n) != '#' || nskip == 0){
                        //满足条件时与t中元素进行比较
                        break;
                    }
                }
                while(m >= 0){
                    if(t.charAt(m) == '#'){
                        mskip++;
                        m--;
                    }else if(mskip > 0){
                        mskip--;
                        m--;
                    }else{
                        break;
                    }
                }
                if(n >= 0 && m >= 0){
                    //此时s,t中都还有元素
                    if(s.charAt(n) != t.charAt(m)){
                        return false;
                    }
                }else{
                    //s,t中只有一方没有元素
                    if(n >= 0 || m >= 0){
                        return false;
                    }
                }
                n--;
                m--;
            }
            //此时s,t中都没元素,已经比较完了
            return true;
        }
    }

举报

相关推荐

0 条评论