[Nowcoder] 字符串是否由字串拼接
阿新 • • 發佈:2018-08-10
ios ron nbsp ++ int size tro div 最長 給出一個非空的字符串,判斷這個字符串是否是由它的一個子串進行多次首尾拼接構成的。
例如,"abcabcabc"滿足條件,因為它是由"abc"首尾拼接而成的,而"abcab"則不滿足條件。
輸入描述:
非空字符
輸出描述:
如果字符串滿足上述條件,則輸出最長的滿足條件的的子串;如果不滿足條件,則輸出false。
輸入例子1:
abcabc
輸出例子1:
abc
從給定字符串的一半大小開始判斷,先判斷n/2是否滿足條件,如果滿足直接輸出,如果不滿足繼續判斷n/3,直到判斷至n/i = 1為止,如果所有都不滿足條件,那麽輸出false。
#include <iostream> #include<string> using namespace std; int main() { string str; while (cin >> str) { int n = str.size(); bool isOk = false; for (int i = n/2; i >= 1; --i) { string tmp = str.substr(0, i); string res; for (int j = 0; j < n / i; ++j) res+= tmp; if (res == str) { cout << tmp << endl; isOk = true; break; } } if (!isOk) cout << "false" << endl; } return 0; }
[Nowcoder] 字符串是否由字串拼接