链接:925. 长按键入
很明显双指针可以解决该问题,简单记下思路:
设置 i, j 指针分别指向两个字符串首部, 设置 l, r 分别计数重复出现的连续字符个数如果两个指针指向的字符本身就不同,则直接 return false如果 l > r 则为示例 2 的错误情况,false如果循环完毕后两个指针没有指向各自的字符串结尾位置,则说明,一串走完了,另一串还有剩余字符,则 false参见代码如下:
class Solution { public: bool isLongPressedName(string name, string typed) { int n = name.size(), t = typed.size(); int i = 0, j = 0; for (i, j; i < n && j < t; ++i, ++j) { if (name[i] != typed[j]) return false; int l = 1, r = 1; while (i < n && name[i] == name[i + 1]) ++l, ++i; while (j < t && typed[j] == typed[j + 1]) ++j, ++r; if (l > r) return false; } if (i != n || j != t) return false; return true; } };