1736: 反射-含某个字符的子串的查找
zcmu:
1736: 反射
Time Limit: 1 Sec Memory Limit: 128 MB
[Submit][Status][Web Board]
Description
我們都知道人眼對自然界中的景物有不同的彩色感覺是因為日光(光源)包含有各種波長的可見光,
同時景物又具有不同的反射(或透射)特性的緣故。例如:西紅柿具有反射紅色光譜成分的特性,
在太陽光照射下其中的紅色成分(吸收了其他光譜成分),所以人眼看到的西紅柿是紅色的。如果
把西紅柿放到藍光下,照射到西紅柿上的藍光被它吸收了,人眼看到的將是黑色的西紅柿。
Input
我們在每組測試數據的第一行有一個字符,表示某個景物能夠反射的顏色,第二行輸入的是一行
字符串(長度不超過1000),表示一組照射到該景物上的光源(長度不超過26)。問,是否有光源
照射到景物上能夠顯示出景物的顏色,如果有則將每個光源按行輸出,沒有則輸出“No!”。
有多組測試數據,每組測試數據的輸出結果用一行空行分割開來。
Output
Sample Input
r
ogr bg abc r
e
oga bw
Sample Output
ogr
r
No!
HINT
Source
/*
嚴格按題目要求來做,開始用strstr來做,一個字符開始一直輸入按(%s,x)來輸入,測試沒有問題,但是,一直ac不了!然后無奈之下我就用find來做,因為不是特別熟悉C++的string,一直有問題,躺著床上睡覺的時候想了很多,strstr一下換成%c,&x[0],看一下行不行,find的問題應該用s2+=*it2,而不是用s[k++] = *it2,或用(it3 = s2.begin(),*it3 = *it2,it3++) (這兩種錯誤的cout<<s2<<endl;都是沒有字符輸出)
晚上睡覺時想的,剛剛試了一下都AC了!兩種都ac了!!開心~
*/
AC_code:
用strstr:
用find:
#include <iostream> #include <string> #include <string.h> #include <stdio.h> using namespace std; int main() {char x;while(cin>>x){string s1,s2;getchar();getline(cin,s1);int k ,flag = 0;string::iterator it1,it2;for(it1 = s1.begin(); it1 < s1.begin()+s1.size(); it1+=k+1){k = 0;for(it2 = it1; ; it2++){if(*it2==' '||it2 == s1.begin()+s1.size())break;s2 += *it2;k++;}if(s2.find(x)!=string::npos){cout<<s2<<endl;flag = 1;}s2.clear();}if(!flag)cout<<"No!"<<endl;cout<<endl;}return 0; }總結
以上是生活随笔為你收集整理的1736: 反射-含某个字符的子串的查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1746: 多项式系数(杨辉三角的应用)
- 下一篇: 1581: 统计成绩-一题简单的坑题