小白学习[leetcode]之925长按键入

it2024-03-30  53

题目的链接在这里: https://leetcode-cn.com/problems/long-pressed-name/

目录

题目大意一、示意图二、解题思路使用Java来写


题目大意

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

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


一、示意图

二、解题思路

使用Java来写

代码如下:

class Solution { public boolean isLongPressedName(String name, String typed) { //按照网上的解析,用的双指针 int len_n=name.length(); int len_t=typed.length(); //先排除极端情况,如果输入的值都比最终值要小,肯定不会 if(len_n>len_t){ return false; } //然后开始双指针 int i=0,j=0; while(i<len_n&&j<len_t){ //开始指向,如果他们是一样的话,就一起向前 if(name.charAt(i)==typed.charAt(j)){ i++; j++; } //如果出现不一样的,但是有一种特殊情况,也就是重样的时候比如:alex 和aaleex这样,直接看j是不是等于前面的一个 else if(j>0&&typed.charAt(j)==typed.charAt(j-1)){ j++; } //其他情况下,都直接返回 else{ return false; } } //跳出循环还需要做一些优化 while(j<len_t){ if(typed.charAt(j)!=typed.charAt(j-1)) return false; j++; } return i ==len_n; } }

最新回复(0)