[C_ST121-易] 找出隱藏字串
Time Limit: 2 seconds
問題描述 :
判斷被尋找的字串S1, S2, …, Sn中,是否隱藏著欲尋找的字W。例如,W是 “apple”,S1是 “abcdekper pszLlabe6”,回傳 “true”;S2是 “abcdekperpszlab”, 回傳 “false”;S3是 “abcdekperpszLabe”,回傳 “false”。假設,S1, S2, …, Sn及W,長度1~1000,都只會含有A~Z, a~z, 0~9及空格(blank),且一次可輸入1~1000個被尋找的字串。
輸入說明 :
第一列代表欲尋找的字(長度可以1~1000),第二列輸入一個1~1000的整數,表示接下來有多少個被尋找的字串,第三列直至最後一列,代表被尋找的字串(可以有1~1000個字串、長度1~1000)
輸出說明 :
在第一列輸出true/false,以表示第一個被尋找的字串隱藏著欲尋找的字是true/false;在第二列輸出true/false,以表示第二個被尋找的字串隱藏著欲尋找的字是true/false;以此類推。注意,每一列輸出都必須有換行字元。
範例 :
問題描述 :
判斷被尋找的字串S1, S2, …, Sn中,是否隱藏著欲尋找的字W。例如,W是 “apple”,S1是 “abcdekper pszLlabe6”,回傳 “true”;S2是 “abcdekperpszlab”, 回傳 “false”;S3是 “abcdekperpszLabe”,回傳 “false”。假設,S1, S2, …, Sn及W,長度1~1000,都只會含有A~Z, a~z, 0~9及空格(blank),且一次可輸入1~1000個被尋找的字串。
輸入說明 :
第一列代表欲尋找的字(長度可以1~1000),第二列輸入一個1~1000的整數,表示接下來有多少個被尋找的字串,第三列直至最後一列,代表被尋找的字串(可以有1~1000個字串、長度1~1000)
輸出說明 :
在第一列輸出true/false,以表示第一個被尋找的字串隱藏著欲尋找的字是true/false;在第二列輸出true/false,以表示第二個被尋找的字串隱藏著欲尋找的字是true/false;以此類推。注意,每一列輸出都必須有換行字元。
範例 :
輸入範例 | 輸出範例 |
apple 3 abcdekpe rpszLlabe6 abcdekperpszlab abcdekperpszLabe | true false false |
- #include <iostream>
- #include <string.h>
- using namespace std;
- int main() {
- // [C_ST121-易] 找出隱藏字串
- string t;//目標字串
- getline(cin, t);
- int N;//測資數
- cin >> N;
- cin.ignore();
- int start = 0;
- int d = 0;
- string re[1000];//儲存找相同的字串
- for(int i = 0;i < N;i++)
- {
- string s;//被搜尋字串
- getline(cin, s);//有空白用getline()
- for(int j = 0;j < t.size();j++)
- {
- for(int k = start;k < s.size();k++)
- {
- if(t[j] == s[k])//如果相同
- {
- re[d] = s[k];//存入re
- start = k+1;
- //下次開始從找到的下一個開始
- d++;
- break;
- }
- }
- }
- string e = "";
- for(int j = 0;j<d;j++)//string[] to string
- {
- e = e + re[j];
- }
- //判斷後輸出
- if(e == t)
- {
- cout << "true" << endl;
- }
- else
- {
- cout << "false" << endl;
- }
- //初始化
- d = 0;
- start = 0;
- }
- return 0;
- }
沒有留言:
張貼留言