Long Pressed Name

Your friend is typing his name into a keyboard.  Sometimes, when typing a character c, the key might get long pressed, and the character will be typed 1 or more times.

You examine the typed characters of the keyboard.  Return True if it is possible that it was your friends name, with some characters (possibly none) being long pressed.

 

Example 1:

Input: name = "alex", typed = "aaleex"
Output: true
Explanation: 'a' and 'e' in 'alex' were long pressed.

Example 2:

Input: name = "saeed", typed = "ssaaedd"
Output: false
Explanation: 'e' must have been pressed twice, but it wasn't in the typed output.

Example 3:

Input: name = "leelee", typed = "lleeelee"
Output: true

思路:雙指針,這裏比較巧妙的是,用了count,也就是說,name裏面的char頻率必須小於typed裏面的頻率。最後記得i,j都必須同時到達最後的length;

class Solution {
    public boolean isLongPressedName(String name, String typed) {
        int i = 0, j = 0;
        while (i < name.length()) {
            if (j == typed.length() || name.charAt(i) != typed.charAt(j)) {
                return false;
            }
            int count = 0;
            while (i < name.length() - 1 && name.charAt(i) == name.charAt(i + 1)) {
                i++;
                count++;
            }
            while (j < typed.length() - 1 && typed.charAt(j) == typed.charAt(j + 1)) {
                j++;
                count--;
            }
            if (count > 0) {
                return false;
            }
            i++;
            j++;
        }
        return i == name.length() && j == typed.length();
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章