925. 长按键入(双指针)

it2024-11-06  18

package com.wsq.leetcode; /** * 925. 长按键入 * @author wsq * @date 2020/10/21 你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。 示例 1: 输入:name = "alex", typed = "aaleex" 输出:true 解释:'alex' 中的 'a' 和 'e' 被长按。 示例 2: 输入:name = "saeed", typed = "ssaaedd" 输出:false 解释:'e' 一定需要被键入两次,但在 typed 的输出中不是这样。 链接:https://leetcode-cn.com/problems/long-pressed-name */ public class IsLongPressedName { /** * 双指针方式遍历 * @param name * @param typed * @return */ public boolean isLongPressedName(String name, String typed) { int lenName = name.length(); int lenTyped = typed.length(); if(lenName > lenTyped){ return false; } int i = 0; int j = 0; while(i < lenName && j < lenTyped){ char c = name.charAt(i); int n = 0; while(i < lenName && name.charAt(i) == c){ n++; i++; } int m = 0; while(j < lenTyped && typed.charAt(j) == c){ m++; j++; } if(n > m){ return false; } } if(i != lenName || j != lenTyped){ return false; } return true; } }
最新回复(0)