给定 s
和 t
两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true
。#
代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
示例 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 = "b" 输出:false 解释:s 会变成 "c",但 t 仍然是 "b"。
首先需要先写出经过退格处理后的字符串
int len_S = strlen(s);
char result_S[len_S+1];
int j = 0;
for(int i = 0;i < len_S ; i++)
{
if(s[i] != '#')
{
result_S[j] = s[i];
j++;
}
else
{
if(j > 0)
{
j--;
}
}
result_S[j] = '\0';
}
printf("%s\n",result_S);
之后写出另一个,并使两者加以比较
bool backspaceCompare(char* s, char* t) {
int len_S = strlen(s);
int len_T = strlen(t);
char result_S[len_S+1];
char result_T[len_T+1];
int j = 0;
int k = 0;
for(int i = 0;i < len_S ; i++)
{
if(s[i] != '#')
{
result_S[j] = s[i];
j++;
}
else
{
if(j > 0)
{
j--;
}
}
result_S[j] = '\0';
}
for(int i = 0;i < len_T ; i++)
{
if(t[i] != '#')
{
result_T[k] = t[i];
k++;
}
else
{
if(k > 0)
{
k--;
}
}
result_T[k] = '\0';
}
printf("%s\ %s",result_S,result_T);
return strcmp(result_S,result_T) == 0;
}