1. 程式人生 > >UVa10340 字串匹配(水題)

UVa10340 字串匹配(水題)

又切了一個水題,最近一直切水題。。。我也沒辦法啊,不是水題不會寫。

本題就是字串的匹配問題。

給定字串s,t,如果s是t的subsequence,那麼輸出Yes,否則輸出No。

先輸入這兩個字串,我開始忘記寫scanf("%s%s",s,t) == 2了,然後報了TLE,這種東西還是不要省略比較好。。。

然後掃面字串t,如果t[i] == s[k],那麼讓k+1,否則繼續迴圈,其實可以在for迴圈中寫如果k==s_len則跳出迴圈,這樣可以讓虛幻早一點結束,不過沒有關係啦。

下面是程式碼:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
const int maxn = 10000000;
char s[maxn];
char t[maxn];
using namespace std;
int main()
{
	while (scanf("%s%s",s,t) == 2)
	{
		int s_len = strlen(s);
		int t_len = strlen(t);
		int k = 0;
		for (int i = 0; i < t_len; i++) {
			if (t[i] != s[k]) continue;
			k++;
		}
		printf("%s\n", k == s_len ? "Yes" : "No");
	}

	return 0;
}