解法一:双指针
一开始想用正则表达式偷懒,结果发现超时了。。。
用两个指针一起遍历 name 和 typed 。每次将name中连续的相同字符遍历完,如果满足长按键入,那么typed中对应位置应该有等长或更长的连续相同字符序列。
最后注意边界条件的判断。
class Solution {public boolean isLongPressedName(String name, String typed) {int pA = 0, pB = 0;final int lenA = name.length(), lenB = typed.length();int cnt = 0;char ch;while ((pA < lenA) && (pB < lenB)) {ch = name.charAt(pA);cnt = 1;++pA;while ((pA < lenA) && (ch == name.charAt(pA))) {++cnt;++pA;}while ((pB < lenB) && (ch == typed.charAt(pB))) {--cnt;++pB;}if (cnt > 0) {return false;}}if ((pA < lenA) || (pB < lenB)) {return false;}return true;}}
