2023.9.7
我的基本思路是两数组字符逐一对比,遇到不同的字符,判断一下typed与上一字符是否相同,不相同返回false,相同则继续对比。 最后要分别判断name和typed分别先遍历完时的情况。直接看代码:
class Solution {
public:
bool isLongPressedName(string name, string typed) {
if(typed[0] != name[0]) return false;//第一个字符对不上直接返回false
if(typed.size() < name.size()) return false;//typed的总字符比name小直接返回false
int i=0;
int j=0;
while(i < name.size() && j < typed.size())
{
if(typed[j] == name[i])
{
i++;
j++;
}
else
{
if(typed[j] == typed[j-1]) j++;
else return false;
}
}
while(i==name.size() && j<typed.size()) //name遍历完了,typed最后的一连串字符都要相同
{
if(typed[j] == typed[j-1]) j++;
else return false;
}
if(j==typed.size() && i<name.size()) return false; //typed遍历完了,name还没遍历完 直接返回false
return true;
}
};
有点小繁琐,但好像看了一圈也只有双指针的办法。