如题
这个简单的题目有点坑的,正向遍历显然有点麻烦,先取个巧,用倒序遍历
char[]chs1=new char [S.length()];
char[]chs2=new char [T.length()];
int m=-1; //两个存储的inde位
int n=-1;
int flag=0; //出现几个#
for(int i=S.length()-1;i>-1;i--) {
if(S.charAt(i)=='#') { //遍历取得为#,flag+1
flag++;
}else if(flag!=0) { //若非#但前面存在#,仅flag-1
flag--;
}else {
m++; //当前存储index
char ch1=S.charAt(i);
chs1[m]=ch1;
}
}
flag=0;
for(int i=T.length()-1;i>-1;i--) {
if(T.charAt(i)=='#') {
flag++;
}else if(flag!=0) {
flag--;
}else {
n++;
char ch2=T.charAt(i);
chs2[n]=ch2;
}
}
for(int i=0;i<=m;i++) {
if(chs1[i]!=chs2[i]) {
return false;
}
}
return true;
结果能接受
后面再加上正序遍历的做法。其实倒序可以不进行缓存,即依次比较取出的值,那样做需要详细判断退出条件