844.比较含退格的字符串
链接:844.比较含退格的字符串
难度:Easy
标签:栈、双指针、字符串、模拟
简介:给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
题解 1 - typescript
- 编辑时间:2020-10-19
- 执行用时:92ms
- 内存消耗:40.2MB
- 编程语言:typescript
- 解法介绍:利用正则去掉退格。
function backspaceCompare(S: string, T: string): boolean {
return replace(S) === replace(T);
function replace(str: string): string {
const reg = /[a-z]#/g;
let arr: RegExpMatchArray | null;
while ((arr = str.match(reg)) !== null) {
arr.forEach(v => (str = str.replace(v, '')));
arr = str.match(reg);
// console.log(str);
}
while (str.startsWith('#')) str = str.substr(1);
// console.log(str);
return str;
}
}
题解 2 - typescript
- 编辑时间:2021-03-19
- 执行用时:84ms
- 内存消耗:39.7MB
- 编程语言:typescript
- 解法介绍:栈维护。
function backspaceCompare(S: string, T: string): boolean {
function compStr(str: string): string {
const stack: string[] = [];
for (let i = 0, l = str.length; i < l; i++) {
const c = str[i];
if (c === '#') {
if (stack.length === 0) continue;
else stack.pop();
} else {
stack.push(c);
}
}
return stack.join('');
}
return compStr(S) === compStr(T);
}