给定 S
和 T
两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 #
代表退格字符。
示例 1:
输入:S = "ab#c", T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。
示例 2:
输入:S = "ab##", T = "c#d#" 输出:true 解释:S 和 T 都会变成 “”。
示例 3:
输入:S = "a##c", T = "#a#c" 输出:true 解释:S 和 T 都会变成 “c”。
示例 4:
输入:S = "a#c", T = "b" 输出:false 解释:S 会变成 “c”,但 T 仍然是 “b”。
提示:
1 <= S.length <= 200
1 <= T.length <= 200
S
和T
只含有小写字母以及字符'#'
。
思路:检索字符串中的#,删除#和#之前的一个字符,最后比较两个结果是否相同。
代码实现:
class Solution {
public static boolean backspaceCompare(String S, String T) {
return toChange(S).equals(toChange(T));
}
public static String toChange(String str)
{
StringBuilder sb = new StringBuilder(str);
int key=sb.indexOf("#"); //获取第一个#的位置
while (key!=-1)
{
if (key!=0) //如果#不在字符串首,则去掉#和其前一个字符
sb.delete(key-1,key+1);
else
sb.deleteCharAt(key);//如果#在字符串首,则仅去掉#
key = sb.indexOf("#");//检索下一个#的位置
}
return sb.toString();
}
}