925. 长按键入

103 阅读1分钟

题目:
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。

你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True
算法:
方法一:模拟

func isLongPressedName(name string, typed string) bool {
    i, j := 0, 0
    n, m := len(name), len(typed)
    for i < n && j < m {
        if name[i] != typed[j] {
            break
        }
        ii, jj := i, j
        for ii < n && name[i] == name[ii] {
            ii ++
        }
        for jj < m && typed[j] == typed[jj] {
            jj ++
        }
        // fmt.Println(ii, i, jj, j)
        if ii - i >  jj - j {
            break
        }
        i = ii 
        j = jj 
    }
    // fmt.Println(i, j)
    return i == n && j == m
}