Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ddcd31b

Browse files
添加(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)

AltStyle によって変換されたページ (->オリジナル) /