0%

925.长按键入

1. 模拟

两个指针分别指向nametyped即可。
时间O(m + n),空间O(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Solution {
public:
bool isLongPressedName(string name, string typed) {
int nameLen = name.length(), typedLen = typed.length();
int nameIdx = 0, typedIdx = 0;
bool res = true;

while (res && (nameIdx < nameLen || typedIdx < typedLen)) {
if (nameIdx == nameLen) {
if (typedIdx == 0)
res = false;
else {
while (typedIdx < typedLen) {
if (typed[typedIdx] == typed[typedIdx - 1])
typedIdx++;
else {
res = false;
break;
}
}
}
} else if (typedIdx == typedLen)
res = false;
else {
if (name[nameIdx] == typed[typedIdx]) {
nameIdx++;
typedIdx++;
if (nameIdx < nameLen && name[nameIdx] != name[nameIdx - 1]) {
while (typedIdx < typedLen && typed[typedIdx] == typed[typedIdx - 1])
typedIdx++;
}
} else
res = false;
}
}

return res;
}
};