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