mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
添加(0844.比较含退格的字符串.md):增加typescript版本
This commit is contained in:
@ -399,6 +399,71 @@ var backspaceCompare = function(s, t) {
|
||||
|
||||
```
|
||||
|
||||
### TypeScript
|
||||
|
||||
> 双栈法:
|
||||
|
||||
```typescript
|
||||
function backspaceCompare(s: string, t: string): boolean {
|
||||
const stack1: string[] = [],
|
||||
stack2: string[] = [];
|
||||
for (let c of s) {
|
||||
if (c === '#') {
|
||||
stack1.pop();
|
||||
} else {
|
||||
stack1.push(c);
|
||||
}
|
||||
}
|
||||
for (let c of t) {
|
||||
if (c === '#') {
|
||||
stack2.pop();
|
||||
} else {
|
||||
stack2.push(c);
|
||||
}
|
||||
}
|
||||
if (stack1.length !== stack2.length) return false;
|
||||
for (let i = 0, length = stack1.length; i < length; i++) {
|
||||
if (stack1[i] !== stack2[i]) return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
```
|
||||
|
||||
> 双指针法:
|
||||
|
||||
```typescript
|
||||
function backspaceCompare(s: string, t: string): boolean {
|
||||
let sIndex: number = s.length - 1,
|
||||
tIndex: number = t.length - 1;
|
||||
while (true) {
|
||||
sIndex = getIndexAfterDel(s, sIndex);
|
||||
tIndex = getIndexAfterDel(t, tIndex);
|
||||
if (sIndex < 0 || tIndex < 0) break;
|
||||
if (s[sIndex] !== t[tIndex]) return false;
|
||||
sIndex--;
|
||||
tIndex--;
|
||||
}
|
||||
return sIndex === -1 && tIndex === -1;
|
||||
};
|
||||
function getIndexAfterDel(s: string, startIndex: number): number {
|
||||
let backspaceNum: number = 0;
|
||||
while (startIndex >= 0) {
|
||||
// 不可消除
|
||||
if (s[startIndex] !== '#' && backspaceNum === 0) break;
|
||||
// 可消除
|
||||
if (s[startIndex] === '#') {
|
||||
backspaceNum++;
|
||||
} else {
|
||||
backspaceNum--;
|
||||
}
|
||||
startIndex--;
|
||||
}
|
||||
return startIndex;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||
|
Reference in New Issue
Block a user