# 不同子串 #### 题目描述 一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成的串。 例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。 注意在计算时,只算本质不同的串的个数。 请问,字符串```0100110001010001```有多少个不同的非空子串? ## aop ### before ```cpp #include using namespace std; ``` ### after ```cpp ``` ## 答案 ```cpp int main() { set s; string str; cin >> str; for (int i = 0; i < str.size(); i++) for (int j = i; j < str.size(); j++) s.insert(str.substr(i, j - i + 1)); cout << s.size(); return 0; } ``` ## 选项 ### A ```cpp int main() { set s; string str; cin >> str; for (int i = 0; i < str.size(); i++) for (int j = i; j < str.size(); j++) s.insert(str.substr(i, j + i - 1)); cout << s.size(); return 0; } ``` ### B ```cpp int main() { set s; string str; cin >> str; for (int i = 0; i < str.size(); i++) for (int j = i; j < str.size(); j++) s.insert(str.substr(i, j + 1)); cout << s.size(); return 0; } ``` ### C ```cpp int main() { set s; string str; cin >> str; for (int i = 0; i < str.size(); i++) for (int j = i; j < str.size(); j++) s.insert(str.substr(i, j - i)); cout << s.size(); return 0; } ```