練習——獲取字串

子串

總時間限制: 1000ms    內存限制: 65536kB

描述
字符串s和t均由字母組成,若在t中除去一些字母能夠得到s,我們就說s是t的一個子串。比如abc就是acbefc的子串
(acbefc去掉第二、第四、第五個字符後就得到abc)
輸入
有若干組輸入數據,每組一行,分別爲字符串s和t,s與t之間用空格隔開
輸出
對於一組s與t,若s是t的子串,則輸出Yes,否則輸出No
樣例輸入
sequence subsequence
abc acb
VERDI vivaVittorioEmanueleReDiItalia
樣例輸出
Yes
No
Yes

思路

1.主要是while(scanf("%s", str) !=EOF)這個若干行輸入,可能會遇到問題。

2.主要思路就是獲取輸入之後,從頭至尾,一個字母一個字母對比。有相同的字母,子串向後移動一位;不論有沒有相同的字母,主串對比之後都想後移動一位。對比結束後,如果子串比對到最後一個(對比成功),則是子串,輸出Yes。

注:本題中輸出Yes或者No需要輸出回車;


代碼:

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;

int main(int argc, char *argv[]) {
	
	char s[200],t[200];
	while(scanf("%s",s)!=EOF && scanf("%s",t)!= EOF)
 	{
 		string _s = s, _t = t;
 		int i=0; int j=0;
		while(i<_t.length())
		{
			if(_t.substr(i,1) == _s.substr(j,1) )
			{
				i++;j++;
				if(j==_s.length())
					break;
			}
			else
				i++;
		}
		if(j == _s.length() )
			cout<<"Yes"<<endl;
		else
			cout<<"No"<<endl;
 	}
	
	return 0;
}

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