All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0901_1000.s0925_long_pressed_name.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0901_1000.s0925_long_pressed_name;

// #Easy #String #Two_Pointers #2022_03_29_Time_1_ms_(84.87%)_Space_40.1_MB_(93.12%)

/**
 * 925 - Long Pressed Name\.
 *
 * Easy
 *
 * 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 was not in the typed output.
 *
 * **Constraints:**
 *
 * *   `1 <= name.length, typed.length <= 1000`
 * *   `name` and `typed` consist of only lowercase English letters.
**/
public class Solution {
    public boolean isLongPressedName(String name, String typed) {
        int i = 0;
        int j = 0;
        char prev = '$';
        if (typed.length() < name.length()) {
            return false;
        }
        while (i < name.length() && j < typed.length()) {
            while (j < typed.length() && typed.charAt(j) != name.charAt(i)) {
                if (typed.charAt(j) != prev) {
                    return false;
                }
                if (j == typed.length() - 1) {
                    return false;
                }
                j++;
            }
            prev = name.charAt(i);
            i++;
            j++;
        }
        if (i < name.length()) {
            return false;
        }
        for (; j < typed.length(); j++) {
            if (typed.charAt(j) != prev) {
                return false;
            }
        }
        return true;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy