CodeForces-58A-Chat room

A. Chat room
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Vasya has recently learned to type and log on to the Internet. He immediately entered a chat room and decided to say hello to everybody. Vasya typed the word s. It is considered that Vasya managed to say hello if several letters can be deleted from the typed word so that it resulted in the word "hello". For example, if Vasya types the word "ahhellllloou", it will be considered that he said hello, and if he types "hlelo", it will be considered that Vasya got misunderstood and he didn't manage to say hello. Determine whether Vasya managed to say hello by the given word s.

Input

The first and only line contains the word s, which Vasya typed. This word consisits of small Latin letters, its length is no less that 1 and no more than 100 letters.

Output

If Vasya managed to say hello, print "YES", otherwise print "NO".

Sample test(s)
input
ahhellllloou
output
YES
input
hlelo
output
NO

#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;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章