版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GYH0730/article/details/84170000
Your friend is typing his
name
into a keyboard. Sometimes, when typing a characterc
, the key might get long pressed, and the character will be typed 1 or more times.You examine the
typed
characters of the keyboard. ReturnTrue
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 wasn't in the typed output.
Example 3:
Input: name = "leelee", typed = "lleeelee" Output: true
Example 4:
Input: name = "laiden", typed = "laiden" Output: true Explanation: It's not necessary to long press any character.
Note:
name.length <= 1000
typed.length <= 1000
- The characters of
name
andtyped
are lowercase letters.
题意:当输入一个字符时,这个字符可能出现多次,给出原串和显示的串,问是否相匹配
思路:维护双指针i,j,从j开始在type中找name[i],找到之后另i++,j等于找到的位置+1,然后继续找,找不到返回false。
C代码:
bool isLongPressedName(char* name, char* typed) {
if(strcmp(name,typed) == 0) return true;
int len1 = strlen(name);
int len2 = strlen(typed);
int i,j,pos;
pos = 0;
for(i = 0; i < len1; i++) {
bool flag = false;
for(j = pos; j < len2; j++) {
if(name[i] == typed[j]) {
pos = j + 1;
flag = true;
break;
}
}
if(!flag) {
break;
}
}
if(i == len1) return true;
else return false;
}
Java代码:
扫描二维码关注公众号,回复:
6185910 查看本文章
public class Solution {
public boolean isLongPressedName(String name, String typed) {
if(name.equals(typed)) return true;
int pos = 0,i,j;
int len1 = name.length();
int len2 = typed.length();
for(i = 0; i < len1; i++) {
boolean flag = false;
for(j = pos; j < len2; j++) {
if(typed.charAt(j) == name.charAt(i)) {
pos = j + 1;
flag = true;
break;
}
}
if(!flag) break;
}
if(i == len1) return true;
else return false;
}
}