/**
* 844. 比较含退格的字符串
* @author wsq
* @date 2020/10/19
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
示例 1:
输入:S = "ab#c", T = "ad#c"
输出:true
解释:S 和 T 都会变成 “ac”。
示例 2:
输入:S = "ab##", T = "c#d#"
输出:true
解释:S 和 T 都会变成 “”。
链接:https://leetcode-cn.com/problems/backspace-string-compare
*/
package com.wsq.leetcode;
public class BackspaceCompare {
/**
* 双指针
* 1. 从后向前记录 "#" 的数量
* 2.删除等数量的字符
* 3.不能删除并且不是"#"的字符需比较两者是否相同,不相同则返回false
* @param S
* @param T
* @return
*/
public boolean backspaceCompare(String S, String T) {
int i = S.length() - 1;
int j = T.length() - 1;
// #号的数目
int skipS = 0;
int skipT = 0;
while(i >= 0 || j >= 0){
while(i >= 0){
if(S.charAt(i) == '#'){
i--;
skipS++;
}else if(skipS > 0){
i--;
skipS--;
}else{
break;
}
}
while(j >= 0){
if(T.charAt(j) == '#'){
j--;
skipT++;
}else if(skipT > 0){
j--;
skipT--;
}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--;
j--;
}
return true;
}
}
844. 比较含退格的字符串(双指针)
最新推荐文章于 2024-06-26 11:04:26 发布