给定两个字符串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的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。