题目:
给定 s
和 t
两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true
。#
代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
双指针
一个快指针,用于遍历字符串;
一个慢指针,用于重建字符串;
正常情况(非退格字符):快慢指针都增。
‘#’出现时,快指针依旧增,慢指针减一,相当于退格(删除字符)。
注:慢指针索引大于零,才能减一。
class Solution {
public boolean backspaceCompare(String s, String t) {
char[]s1=s.toCharArray();
char[]t1=t.toCharArray();
return helper(s1).equals(helper(t1));
}
private String helper(char[] s){
int i=0,j=0;
while(j<s.length){
if(s[j]!='#'){
s[i++]=s[j++];
}else{
j++;
if(i>0)i--;
}
}return new String(s).substring(0,i);
}
}