diff --git a/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/README.md b/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/README.md index 7e26a28661df3..5d47fb3fdbbfd 100644 --- a/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/README.md +++ b/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/README.md @@ -218,6 +218,28 @@ func numberOfWays(corridor string) int { ### **TypeScript** ```ts +function numberOfWays(corridor: string): number { + const M: number = 1e9 + 7; + const seatNumbers: number[] = []; + + for (let i = 0; i < corridor.length; i++) { + if (corridor.charAt(i) === 'S') { + seatNumbers.push(i); + } + } + + if (seatNumbers.length % 2 !== 0 || seatNumbers.length === 0) { + return 0; + } + + let result: number = 1; + + for (let i = 2; i < seatNumbers.length; i += 2) { + result = (result * (seatNumbers[i] - seatNumbers[i - 1]) % M); + } + + return result; +} ``` diff --git a/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/README_EN.md b/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/README_EN.md index e3748d6bcc2fc..22c209b318bb2 100644 --- a/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/README_EN.md +++ b/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/README_EN.md @@ -193,6 +193,28 @@ func numberOfWays(corridor string) int { ### **TypeScript** ```ts +function numberOfWays(corridor: string): number { + const M: number = 1e9 + 7; + const seatNumbers: number[] = []; + + for (let i = 0; i < corridor.length; i++) { + if (corridor.charAt(i) === 'S') { + seatNumbers.push(i); + } + } + + if (seatNumbers.length % 2 !== 0 || seatNumbers.length === 0) { + return 0; + } + + let result: number = 1; + + for (let i = 2; i < seatNumbers.length; i += 2) { + result = (result * (seatNumbers[i] - seatNumbers[i - 1]) % M); + } + + return result; +} ``` diff --git a/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/solution.ts b/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/solution.ts new file mode 100644 index 0000000000000..5de71e72e79be --- /dev/null +++ b/solution/2100-2199/2147.Number of Ways to Divide a Long Corridor/solution.ts @@ -0,0 +1,22 @@ +function numberOfWays(corridor: string): number { + const M: number = 1e9 + 7; + const seatNumbers: number[] = []; + + for (let i = 0; i < corridor.length; i++) { + if (corridor.charAt(i) === 'S') { + seatNumbers.push(i); + } + } + + if (seatNumbers.length % 2 !== 0 || seatNumbers.length === 0) { + return 0; + } + + let result: number = 1; + + for (let i = 2; i < seatNumbers.length; i += 2) { + result = (result * (seatNumbers[i] - seatNumbers[i - 1]) % M); + } + + return result; +}