题目描述:
给定 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: bool backspaceCompare(string S, string T) { vector<char>v1; //操作S,字符类型 vector<char>v2; //操作T for(int i=0;i<S.size();++i){ if(S[i]<='z' && S[i]>='a'){ //这里用'' 因为字符串的单个元素为字符 v1.push_back(S[i]); } else if(v1.empty()) //当向量为空时,无法删除最后一个元素,因为没有了。 continue; else v1.pop_back(); } for(int i=0;i<T.size();++i){ if(T[i]<='z' && T[i]>='a'){ v2.push_back(T[i]); } else if(v2.empty()) continue; else v2.pop_back(); } if(v1.size()!=v2.size()) return false; else{ for(int i=0;i<v1.size();++i){ if(v1[i]!=v2[i]) return false; } return true; } } };