925. 长按键入

题目: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;
    }

}

将字符串转换成字符数组,使用双游标遍历,针对出现的各种情况进行判断即可解答,具体逻辑参考代码及注释。