2017年12月14日 星期四

[C_ST121-易] 找出隱藏字串(C++)

[C_ST121-易] 找出隱藏字串

Time Limit: 2 seconds
問題描述 :
判斷被尋找的字串S1, S2, …, Sn中,是否隱藏著欲尋找的字W。例如,W是 “apple”,S1是 “abcdekper pszLlabe6”,回傳 “true”;S2是 “abcdekperpszlab”, 回傳 “false”;S3是 “abcdekperpszLabe”,回傳 “false”。假設,S1, S2, …, SnW,長度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

  1. #include <iostream>  
  2. #include <string.h>  
  3. using namespace std;  
  4.   
  5. int main() {  
  6.     // [C_ST121-易] 找出隱藏字串  
  7.     string t;//目標字串  
  8.     getline(cin, t);  
  9.     int N;//測資數  
  10.     cin >> N;  
  11.     cin.ignore();   
  12.     int start = 0;  
  13.     int d = 0;  
  14.     string re[1000];//儲存找相同的字串  
  15.     for(int i = 0;i < N;i++)  
  16.     {  
  17.         string s;//被搜尋字串  
  18.         getline(cin, s);//有空白用getline()  
  19.         for(int j = 0;j < t.size();j++)  
  20.         {  
  21.             for(int k = start;k < s.size();k++)  
  22.             {  
  23.                 if(t[j] == s[k])//如果相同  
  24.                 {  
  25.                     re[d] = s[k];//存入re  
  26.                     start = k+1;  
  27.                     //下次開始從找到的下一個開始  
  28.                     d++;  
  29.                     break;  
  30.                 }  
  31.             }  
  32.         }  
  33.         string e = "";  
  34.         for(int j = 0;j<d;j++)//string[] to string  
  35.         {  
  36.             e = e + re[j];  
  37.         }  
  38.         //判斷後輸出  
  39.         if(e == t)  
  40.         {  
  41.             cout << "true" << endl;  
  42.         }  
  43.         else  
  44.         {  
  45.             cout << "false" << endl;  
  46.         }  
  47.         //初始化  
  48.         d = 0;  
  49.         start = 0;  
  50.     }  
  51.     return 0;  
  52. }  

沒有留言:

張貼留言