925. 長按鍵入

HomoCrush發表於2020-10-21

當兩個指標指向的字母不同時返回false,當name遍歷到最後一個字母時,遍歷typed剩下的字母,若不想等則返回false。當遇到連續的情況,如果typed連續,name不連續則僅移動指向typed的指標,其他情況(兩者相等且字母不連續相等,或name和typed字母同時連續相等)則移動兩個指標。

class Solution {
public:
    bool isLongPressedName(string name, string typed) {
        int n = name.size(), m = typed.size(), i = 0, j = 0;
        while(i < n && j < m) {
            if (name[i] != typed[j]) {
                return false;
            }
            if (i == n - 1) {
                for (int k = j; k < m; ++k) {
                    if (typed[k] != name[i]) {
                        return false;
                    }
                }
                return true;
            }
            if(j + 1 < m && typed[j] == typed[j + 1] && name[i] != name[i + 1]) {
                while (typed[j] == typed[j + 1]) {
                    ++j;
                }
                ++i;
                ++j;
            } else {
                ++i;
                ++j;
            }
        }
        return false;
    }
};

相關文章