#include<iostream>
#include<string>
using namespace std;
int main()
{
string x = "hello";
string y;
cin >> y;
bool isTrue = true;
int length = y.length();
for (int i = 0; i < 5; i++){
if (y.find(x[i])!=string::npos){
y=y.substr(y.find(x[i])+1, length);
}
else{
isTrue = false;
break;
}
}
cout << (isTrue ? "YES" : "NO");
return 0;
}
改進思路:這樣寫太過麻煩,應該採用長字符串在外循環的方法,沒有運用到貪心算法,這樣寫因爲採用hello在外循環,則裏面需要對輸入的字符串進行切割操作、改進後結果如下:
<pre name="code" class="cpp">#include<iostream>
#include<string>
using namespace std;
int main()
{
char x[] = { 'h', 'e', 'l', 'l', 'o' };
string y;
int num = 0;
cin >> y;
for (int i = 0; i < y.length(); i++){
if (y[i] == x[num]){
num++;
}
}
cout << (num == 5 ? "YES" : "NO");
system("pause");
return 0;
}