Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

925. 长按键入 #67

Open
yankewei opened this issue Oct 21, 2020 · 1 comment
Open

925. 长按键入 #67

yankewei opened this issue Oct 21, 2020 · 1 comment
Labels
双指针 题目包含双指针解法 字符串 题目类型为字符串 简单 题目难度为简单

Comments

@yankewei
Copy link
Owner

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

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

示例 1:

输入:name = "alex", typed = "aaleex"
输出:true
解释:'alex' 中的 'a' 和 'e' 被长按。

示例 2:

输入:name = "saeed", typed = "ssaaedd"
输出:false
解释:'e' 一定需要被键入两次,但在 typed 的输出中不是这样。

示例 3:

输入:name = "leelee", typed = "lleeelee"
输出:true

示例 4:

输入:name = "laiden", typed = "laiden"
输出:true
解释:长按名字中的字符并不是必要的。

提示:

  • name.length <= 1000
  • typed.length <= 1000
  • name 和 typed 的字符都是小写字母。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/long-pressed-name

@yankewei yankewei added 双指针 题目包含双指针解法 字符串 题目类型为字符串 简单 题目难度为简单 labels Oct 21, 2020
@yankewei
Copy link
Owner Author

双指针

第一眼看上去就是双指针,两个指针从字符串头开始。

func isLongPressedName(name string, typed string) bool {
    // 用一个变量来保存typed字符串的上一个字符
    var pre byte
    i, j := 0, 0
    for i < len(name) && j < len(typed) {
        // 如果当前两个指针指向的字符相同,继续遍历即可
	if name[i] == typed[j] {
	    pre = typed[j]
	    i++
	    j++
	    continue
        // 如果当前两个指针指向的字符不同,但是j指针指向的字符和pre相同,说明是长按键入的
	} else if name[i] != typed[j] && typed[j] == pre {
	    j++
	    continue
	} else {
	    return false
	}
    }
    // 遍历完了,但是i指针却小于len(name),说明j遍历完了,i还没有指向结尾,返回false
    if i < len(name) {
	return false
    }
    for j < len(typed) {
	if typed[j] != pre {
	    return false
	}
	j++
    }
    return true
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
双指针 题目包含双指针解法 字符串 题目类型为字符串 简单 题目难度为简单
Projects
None yet
Development

No branches or pull requests

1 participant