目录
题目
给定 s
和 t
两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true
。#
代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
思路
因为这个#影响的是前面的那一位,所以让指针从后面开始。
设置一个标识符让#有所标记,然后跳过前面的
两个数组分别设置指针。
代码
class Solution {
public boolean backspaceCompare(String s, String t) {
int i=s.length()-1,j=t.length()-1;//指向最后一个元素
int skips=0,skipt=0;
while(i>=0||j>=0){
while(i>=0){
if(s.charAt(i)=='#'){
skips++;//与没有#做一个区分
i--;//让指针往前移一个
}else if(skips>0){//这个就是有#的情况
skips--;
i--;
}else{break;}
}
while(j>=0){
if(t.charAt(j)=='#'){
skipt++;
j--;
}else if(skipt>0){
skipt--;
j--;
}else{break;}
}
if(i>=0&&j>=0){
if(s.charAt(i)!=t.charAt(j)){
return false;
}
}else{
if(i>=0||j>=0){return false;}
}
i--;//还在while循环里,让他继续移动
j--;
}
return true;
}
}