Java经典算法:退格字符串比较

给定两个字符串S和T,如果在空文本编辑器中键入两个字符串,则返回它们是否相等。#表示退格字符。
范例1:
输入:S =“ ab#c”,T =“ ad#c”
输出:真
说明:S和T都变为“ ac”。
范例2:
输入:S =“ a ## c”,T =“#a#c”
输出:真
说明:S和T都变为“ c”。
Java解决方案
此问题需要O(N)时间和O(1)空间。
public boolean backspaceCompare(String S, String T) {
int i = S.length()-1;
int j = T.length()-1;

while(i>=0 || j>=0){
    int c1=0;
    while(i>=0 && (c1>0 || S.charAt(i)=='#')){
        if(S.charAt(i)=='#'){
            c1++;
        }else{
            c1--;
        }

        i--;
    }

    int c2=0;
    while(j>=0 && (c2>0 || T.charAt(j)=='#')){
        if(T.charAt(j)=='#'){
            c2++;
        }else{
            c2--;
        }

        j--;
    }

    if(i>=0 && j>=0){
        if(S.charAt(i)!=T.charAt(j)){
            return false;
        }else{
            i--;
            j--;
        }
    }else{
        if(i>=0 || j>=0){
            return false;
        }
    }
}

return i<0 && j<0;}

最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。在这里插入图片描述

发布了252 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zhaozihao594/article/details/105147543