目录
- 题目
- 思路
- 解法
- 收获
题目
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
思路
如何解退格之后left-2又遇到退格的问题
解法
class Solution {
public:bool backspaceCompare(string S, string T) {int i = S.length() - 1, j = T.length() - 1;int skipS = 0, skipT = 0;while (i >= 0 || j >= 0) {while (i >= 0) {if (S[i] == '#') {skipS++, i--;} else if (skipS > 0) {skipS--, i--;} else {break;}}while (j >= 0) {if (T[j] == '#') {skipT++, j--;} else if (skipT > 0) {skipT--, j--;} else {break;}}if (i >= 0 && j >= 0) {if (S[i] != T[j]) {return false;}} else {if (i >= 0 || j >= 0) {return false;}}i--, j--;}return true;}
};作者:力扣官方题解
链接:https://leetcode.cn/problems/backspace-string-compare/solutions/451606/bi-jiao-han-tui-ge-de-zi-fu-chuan-by-leetcode-solu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
收获
可以有while(true)或者while(i>0)然后满足条件可以break跳出循环。因为之前写了个while,但是因为会遇到多种情况,while出不来,又不能用if,因为if只会判断一次。这个while下面多条件判断的结构很好。