Skip to content

Commit ddcd31b

Browse files
committed
添加(0844.比较含退格的字符串.md):增加typescript版本
1 parent af239ce commit ddcd31b

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

problems/0844.比较含退格的字符串.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,71 @@ var backspaceCompare = function(s, t) {
399399

400400
```
401401

402+
### TypeScript
403+
404+
> 双栈法:
405+
406+
```typescript
407+
function backspaceCompare(s: string, t: string): boolean {
408+
const stack1: string[] = [],
409+
stack2: string[] = [];
410+
for (let c of s) {
411+
if (c === '#') {
412+
stack1.pop();
413+
} else {
414+
stack1.push(c);
415+
}
416+
}
417+
for (let c of t) {
418+
if (c === '#') {
419+
stack2.pop();
420+
} else {
421+
stack2.push(c);
422+
}
423+
}
424+
if (stack1.length !== stack2.length) return false;
425+
for (let i = 0, length = stack1.length; i < length; i++) {
426+
if (stack1[i] !== stack2[i]) return false;
427+
}
428+
return true;
429+
};
430+
```
431+
432+
> 双指针法:
433+
434+
```typescript
435+
function backspaceCompare(s: string, t: string): boolean {
436+
let sIndex: number = s.length - 1,
437+
tIndex: number = t.length - 1;
438+
while (true) {
439+
sIndex = getIndexAfterDel(s, sIndex);
440+
tIndex = getIndexAfterDel(t, tIndex);
441+
if (sIndex < 0 || tIndex < 0) break;
442+
if (s[sIndex] !== t[tIndex]) return false;
443+
sIndex--;
444+
tIndex--;
445+
}
446+
return sIndex === -1 && tIndex === -1;
447+
};
448+
function getIndexAfterDel(s: string, startIndex: number): number {
449+
let backspaceNum: number = 0;
450+
while (startIndex >= 0) {
451+
// 不可消除
452+
if (s[startIndex] !== '#' && backspaceNum === 0) break;
453+
// 可消除
454+
if (s[startIndex] === '#') {
455+
backspaceNum++;
456+
} else {
457+
backspaceNum--;
458+
}
459+
startIndex--;
460+
}
461+
return startIndex;
462+
}
463+
```
464+
465+
466+
402467

403468
-----------------------
404469
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

0 commit comments

Comments
 (0)