[HAI] week3 backspace max solution
https://leetcode.com/problems/backspace-string-compare/submissions/1473739645/main
parent
807a5ae9cf
commit
77824baa7c
@ -0,0 +1,26 @@
|
|||||||
|
import { describe, it, expect } from "vitest";
|
||||||
|
import { backspaceCompare } from "./backspaceCompare.ts";
|
||||||
|
|
||||||
|
describe("backspaceCompare", () => {
|
||||||
|
|
||||||
|
it("ab#c, ad#c => true", () => {
|
||||||
|
expect(backspaceCompare("ab#c", "ad#c")).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("ab##, c#d# => true", () => {
|
||||||
|
expect(backspaceCompare("ab##", "c#d#")).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("a#c, b => false", () => {
|
||||||
|
expect(backspaceCompare("a#c", "b")).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("bxj##tw, bxj###tw => false", () => {
|
||||||
|
expect(backspaceCompare("bxj##tw", "bxj###tw")).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("nzp#o#g, b#nzp#o#g => true", () => {
|
||||||
|
expect(backspaceCompare("nzp#o#g", "b#nzp#o#g")).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
function findNotSkipedIndex(s: string, i: number) {
|
||||||
|
let skipCount = 0;
|
||||||
|
while (i >= 0 && (skipCount > 0 || s[i] === '#')) {
|
||||||
|
if (s[i] === '#') {
|
||||||
|
skipCount += 1;
|
||||||
|
i -= 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
skipCount -= 1;
|
||||||
|
i -= 1;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function backspaceCompare(s: string, t: string): boolean {
|
||||||
|
let sI = s.length;
|
||||||
|
let tI = t.length;
|
||||||
|
|
||||||
|
while (sI > 0 && tI > 0) {
|
||||||
|
sI = findNotSkipedIndex(s, sI - 1);
|
||||||
|
tI = findNotSkipedIndex(t, tI - 1);
|
||||||
|
|
||||||
|
|
||||||
|
if (sI >= 0 && tI >= 0 && s[sI] !== t[tI]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return findNotSkipedIndex(s, sI - 1) === findNotSkipedIndex(t, tI - 1);
|
||||||
|
};
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
import { backspaceCompare } from "./backspaceCompare";
|
||||||
|
|
||||||
|
export default backspaceCompare;
|
||||||
Loading…
Reference in New Issue