Skip to content

Commit be68c1f

Browse files
authored
feat: add solutions to lc problem: No.3163 (#3715)
1 parent 3b52bea commit be68c1f

File tree

6 files changed

+218
-0
lines changed

6 files changed

+218
-0
lines changed

solution/3100-3199/3163.String Compression III/README.md

+86
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,90 @@ function compressedString(word: string): string {
213213

214214
<!-- solution:end -->
215215

216+
<!-- solution:start -->
217+
218+
### 方法二:双指针
219+
220+
<!-- tabs:start -->
221+
222+
#### TypeScript
223+
224+
```ts
225+
function compressedString(word: string): string {
226+
let res = '';
227+
228+
for (let i = 1, j = 0; i <= word.length; i++) {
229+
if (word[i] !== word[j] || i - j === 9) {
230+
res += i - j + word[j];
231+
j = i;
232+
}
233+
}
234+
235+
return res;
236+
}
237+
```
238+
239+
#### JavaScript
240+
241+
```js
242+
function compressedString(word) {
243+
let res = '';
244+
245+
for (let i = 1, j = 0; i <= word.length; i++) {
246+
if (word[i] !== word[j] || i - j === 9) {
247+
res += i - j + word[j];
248+
j = i;
249+
}
250+
}
251+
252+
return res;
253+
}
254+
```
255+
256+
<!-- tabs:end -->
257+
258+
<!-- solution:end -->
259+
260+
<!-- solution:start -->
261+
262+
### 方法三:正则匹配
263+
264+
<!-- tabs:start -->
265+
266+
#### TypeScript
267+
268+
```ts
269+
function compressedString(word: string): string {
270+
const regex = /(.)\1{0,8}/g;
271+
let m: RegExpMatchArray | null = null;
272+
let res = '';
273+
274+
while ((m = regex.exec(word))) {
275+
res += m[0].length + m[1];
276+
}
277+
278+
return res;
279+
}
280+
```
281+
282+
#### JavaScript
283+
284+
```js
285+
function compressedString(word) {
286+
const regex = /(.)\1{0,8}/g;
287+
let m = null;
288+
let res = '';
289+
290+
while ((m = regex.exec(word))) {
291+
res += m[0].length + m[1];
292+
}
293+
294+
return res;
295+
}
296+
```
297+
298+
<!-- tabs:end -->
299+
300+
<!-- solution:end -->
301+
216302
<!-- problem:end -->

solution/3100-3199/3163.String Compression III/README_EN.md

+86
Original file line numberDiff line numberDiff line change
@@ -209,4 +209,90 @@ function compressedString(word: string): string {
209209

210210
<!-- solution:end -->
211211

212+
<!-- solution:start -->
213+
214+
### Solution 2: Two Pointers
215+
216+
<!-- tabs:start -->
217+
218+
#### TypeScript
219+
220+
```ts
221+
function compressedString(word: string): string {
222+
let res = '';
223+
224+
for (let i = 1, j = 0; i <= word.length; i++) {
225+
if (word[i] !== word[j] || i - j === 9) {
226+
res += i - j + word[j];
227+
j = i;
228+
}
229+
}
230+
231+
return res;
232+
}
233+
```
234+
235+
#### JavaScript
236+
237+
```js
238+
function compressedString(word) {
239+
let res = '';
240+
241+
for (let i = 1, j = 0; i <= word.length; i++) {
242+
if (word[i] !== word[j] || i - j === 9) {
243+
res += i - j + word[j];
244+
j = i;
245+
}
246+
}
247+
248+
return res;
249+
}
250+
```
251+
252+
<!-- tabs:end -->
253+
254+
<!-- solution:end -->
255+
256+
<!-- solution:start -->
257+
258+
### Solution 3: RegExp
259+
260+
<!-- tabs:start -->
261+
262+
#### TypeScript
263+
264+
```ts
265+
function compressedString(word: string): string {
266+
const regex = /(.)\1{0,8}/g;
267+
let m: RegExpMatchArray | null = null;
268+
let res = '';
269+
270+
while ((m = regex.exec(word))) {
271+
res += m[0].length + m[1];
272+
}
273+
274+
return res;
275+
}
276+
```
277+
278+
#### JavaScript
279+
280+
```js
281+
function compressedString(word) {
282+
const regex = /(.)\1{0,8}/g;
283+
let m = null;
284+
let res = '';
285+
286+
while ((m = regex.exec(word))) {
287+
res += m[0].length + m[1];
288+
}
289+
290+
return res;
291+
}
292+
```
293+
294+
<!-- tabs:end -->
295+
296+
<!-- solution:end -->
297+
212298
<!-- problem:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function compressedString(word) {
2+
let res = '';
3+
4+
for (let i = 1, j = 0; i <= word.length; i++) {
5+
if (word[i] !== word[j] || i - j === 9) {
6+
res += i - j + word[j];
7+
j = i;
8+
}
9+
}
10+
11+
return res;
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function compressedString(word: string): string {
2+
let res = '';
3+
4+
for (let i = 1, j = 0; i <= word.length; i++) {
5+
if (word[i] !== word[j] || i - j === 9) {
6+
res += i - j + word[j];
7+
j = i;
8+
}
9+
}
10+
11+
return res;
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function compressedString(word) {
2+
const regex = /(.)\1{0,8}/g;
3+
let m = null;
4+
let res = '';
5+
6+
while ((m = regex.exec(word))) {
7+
res += m[0].length + m[1];
8+
}
9+
10+
return res;
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function compressedString(word: string): string {
2+
const regex = /(.)\1{0,8}/g;
3+
let m: RegExpMatchArray | null = null;
4+
let res = '';
5+
6+
while ((m = regex.exec(word))) {
7+
res += m[0].length + m[1];
8+
}
9+
10+
return res;
11+
}

0 commit comments

Comments
 (0)