我的基本思路是两数组字符逐一对比,遇到不同的字符,判断一下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
size()) //name遍历完了,typed最后的一连串字符都要相同 - {
- if(typed[j] == typed[j-1]) j++;
- else return false;
- }
- if(j==typed.size() && i
size()) return false; //typed遍历完了,name还没遍历完 直接返回false - return true;
- }
- };
有点小繁琐,但好像看了一圈也只有双指针的办法。