题目链接
https://leetcode-cn.com/problems/long-pressed-name/
解题思路
显然,字符串typed中的每个字符,只有两种可能
作为name的一部分,此时会匹配name中的一个字符作为长按键入的一部分。此时它应与前一个字符相同
如果typed中存在一个字符,它两个条件均不满足,则应当直接返回false;否则,当typed扫面完毕后,我们再检查name的每个字符是否都被匹配了
当name[i] = typed[j]时,说明两个字符串存在一对匹配的字符,此时将i,j都加1
否则,如果typed[j] = typed[j - 1],说明存在一次长安键入,此时只将j 加1
最后,如果i == name.length,说明name的每个字符都被匹配了
AC代码
class Solution {
public boolean isLongPressedName(String name
, String typed
) {
int i
= 0;
int j
= 0;
while (j
< typed
.length()) {
if (i
< name
.length() && name
.charAt(i
) == typed
.charAt(j
)) {
i
++;
j
++;
} else if (j
> 0 && typed
.charAt(j
) == typed
.charAt(j
- 1)) {
j
++;
} else
return false;
}
return i
== name
.length();
}
}
本地测试代码
package com
.company
;
public class Soluion_925 {
public static boolean isLongPressedName(String name
, String typed
) {
int i
= 0;
int j
= 0;
while (j
< typed
.length()) {
if (i
< name
.length() && name
.charAt(i
) == typed
.charAt(j
)) {
i
++;
j
++;
} else if (j
> 0 && typed
.charAt(j
) == typed
.charAt(j
- 1)) {
j
++;
} else
return false;
}
return i
== name
.length();
}
public static void main(String
[] args
) {
System
.out
.println(isLongPressedName("alex", "aaleex"));
System
.out
.println(isLongPressedName("saeed", "ssaaedd"));
System
.out
.println(isLongPressedName("leelee", "lleeelee"));
System
.out
.println(isLongPressedName("laiden", "laiden"));
}
}