Skip to content

Commit 486fc80

Browse files
author
Openset
committed
Add: long_pressed_name
1 parent 364fda0 commit 486fc80

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,16 @@
11
package long_pressed_name
2+
3+
func isLongPressedName(name string, typed string) bool {
4+
i, nl, j, tl := 0, len(name), 0, len(typed)
5+
for i < nl || j < tl {
6+
if i < nl && j < tl && name[i] == typed[j] {
7+
i++
8+
j++
9+
} else if i >= 1 && j < tl && typed[j] == name[i-1] {
10+
j++
11+
} else {
12+
return false
13+
}
14+
}
15+
return true
16+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,65 @@
11
package long_pressed_name
2+
3+
import "testing"
4+
5+
type caseType struct {
6+
name string
7+
typed string
8+
expected bool
9+
}
10+
11+
func TestIsLongPressedName(t *testing.T) {
12+
tests := [...]caseType{
13+
{
14+
name: "alex",
15+
typed: "aaleex",
16+
expected: true,
17+
},
18+
{
19+
name: "saeed",
20+
typed: "ssaaedd",
21+
expected: false,
22+
},
23+
{
24+
name: "leelee",
25+
typed: "lleeelee",
26+
expected: true,
27+
},
28+
{
29+
name: "laiden",
30+
typed: "laiden",
31+
expected: true,
32+
},
33+
{
34+
name: "laiden",
35+
typed: "laidef",
36+
expected: false,
37+
},
38+
{
39+
name: "a",
40+
typed: "a",
41+
expected: true,
42+
},
43+
{
44+
name: "a",
45+
typed: "b",
46+
expected: false,
47+
},
48+
{
49+
name: "pyplrz",
50+
typed: "ppyypllr",
51+
expected: false,
52+
},
53+
{
54+
name: "vtkgn",
55+
typed: "vttkgnn",
56+
expected: true,
57+
},
58+
}
59+
for _, tc := range tests {
60+
output := isLongPressedName(tc.name, tc.typed)
61+
if output != tc.expected {
62+
t.Fatalf("input: %v %v, output: %v, expected: %v", tc.name, tc.typed, output, tc.expected)
63+
}
64+
}
65+
}

0 commit comments

Comments
 (0)