小猫阿夜最近刚刚学会打字,她立刻给Pluto发送了一条信息“hello”。
然而由于实在太困了,她不小心在键盘上睡着了,她想知道Pluto是否能理解她的消息。
这条消息可以视作一串字符串,如果可以删去若干个字符将字符串变成"hello",则认为Pluto可以理解,否则无法理解。
解题思路:
题目要求我们判断是否能够通过删除字符将字符串变为"hello",那么我们只需遍历整个字符串,利用双指针的思想,分别指向"hello"和原字符串的字符,逐个比较,如果相同,则指向"hello"的指针向后移动,否则原字符串的指针向后移动,直到遍历完整个字符串。
如果在遍历过程中,指向"hello"的指针已经移动到了最后一位,那么说明可以通过删除字符将字符串变成"hello",否则无法理解。
代码实现:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s;
cin>>s;
string hello="hello";
int j=0;
for(int i=0;i<s.length();i++){
if(s[i]==hello[j]){
j++;
}
}
if(j==5){
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
return 0;
}
时间复杂度:O(n)
空间复杂度:O(1)