本文主要记录一下leetcode栈之比较含退格的字符串c#
给定 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 只含有小写字母以及字符 '#'。 进阶: 你能够用 O(N) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗? 来源:力扣(LeetCode) 连接:https://leetcode-cn.com/problems/backspace-string-compare 著做权归领扣网络全部。商业转载请联系官方受权,非商业转载请注明出处。
class Solution { public boolean backspaceCompare(String S, String T) { Stack<Character> stackS = processBackspace(S); Stack<Character> stackT = processBackspace(T); if(stackS.size()!=stackT.size()){ return false; } while (!stackS.isEmpty()){ if(stackS.pop()!=stackT.pop()){ return false; } } return true; } public Stack<Character> processBackspace(String str) { Stack<Character> result = new Stack<>(); for(char data: str.toCharArray()){ if(data == '#'){ if(!result.isEmpty()){ result.pop(); } } else { result.push(data); } } return result; } }
这里借助栈,遍历string的char,遇到#
时在栈不为空的时候pop一下,非#
时则push数据到栈中;以后对比两个栈的元素来判断是否相等。网络