题目:https://leetcode-cn.com/problems/long-pressed-name/
代码:
class Solution { public boolean isLongPressedName(String name, String typed) { char[] names = name.toCharArray(); char[] typeds = typed.toCharArray(); //name长度大于typed,肯定是false //为了避免下方代码t-1处出现异常,额外判断0位置的字符 if (names.length > typeds.length || names[0] != typeds[0]) { return false; } int n = 1; int t = 1; //双游标遍历 while (n < names.length && t < typeds.length) { if (names[n] == typeds[t]) { //相等,游标各自+1 n++; t++; } else if (typeds[t] == typeds[t - 1]) { //不相等,如果是typed长按导致的则t+1 t++; } else { //不是长按导致的,返回false return false; } } //name还有字符,证明没输入完,false if (n < names.length) { return false; } //typed还有字符,可能剩下的都是长按导致 while (t < typeds.length) { if (typeds[t] != typeds[t - 1]) { //不是长按导致,false return false; } t++; } return true; } }
将字符串转换成字符数组,使用双游标遍历,针对出现的各种情况进行判断即可解答,具体逻辑参考代码及注释。