AOJ - Problem 0017 : Caesar Cipher
シーザー暗号に関する問題です。何故かWAをたくさん出してしまいました。
きっとWAを出した人が多い気がします。
1行の文字列を何文字かずらしそのなかに"the","this","that"が含まれていたら
出力するようにします。
一行ごとに読み取り、その文字列が小文字の'a'〜'z'のときだけ1足して、1文字ずらします。
ずらしてできた文字列をfindを使って"the","this","that"の単語を検索して見つかったら
出力するようにします。
#include <iostream> #include <string> using namespace std; int main(){ string s, strCopy; while (getline(cin, s)) { for(int j=0 ; j<26 ; j++){ for(int i=0 ; i<s.size() ; i++){ if(s[i]>='a' && s[i]<='z'){ s[i] = (s[i]=='z')? 'a' : s[i] + 1; } } if( s.find( "the" ) != string::npos || s.find( "this" ) != string::npos || s.find( "that" ) != string::npos){ cout << s << endl; } } } return 0; }