题目:
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
示例:
代码:
- 解法一
class Solution {
public boolean backspaceCompare(String S, String T) {
return result(S).equals(result(T)); //比较两个字符串是否相等
}
public String result(String v){
char[] c=new char[v.length()];
char[] a=v.toCharArray();
int len=0; //标记c数组存储的元素
for(int i=0;i<a.length;i++){
if(len>0&&a[i]=='#'){
len--;
}else if(len==0&&a[i]=='#'){
continue;
}else{
c[len]=a[i];
len++;
}
}
return new String(c,0,len);
}
}
- 解法二
思想与解法一类似
class Solution {
public boolean backspaceCompare(String S, String T) {
return helper(S).equals(helper(T));
}
private String helper(String S){
int cnt = 0; //标记‘#’的个数
StringBuilder sb = new StringBuilder(); //使用字符串存储结果
for(int i=S.length()-1;i>=0;i--){ //倒序遍历数组
char c = S.charAt(i);
if(c == '#' ){
cnt++;
}
else if(cnt>0){
cnt--;
}
else{
sb.append(c);
}
}
return sb.toString();
}