用map来保存结果,保证字串的唯一性。
#include <iostream> #include <string> #include <map> using namespace std; int main() { string str = "0100110001010001"; map<string, int> ans; // 求连续子串 // 定义窗口大小 for (int i = 1; i <= str.size(); i++) { // 每次都从字符串始端,开始滑动窗口 for (int j = 0; j <= str.size()-i; j++) { // 从窗口的起始位置开始提取窗口的值 string s = ""; for (int k = j; k < j+i && k <= str.size()-1; k++) { s = str[k] + s; } ans[s]++; } } cout << ans.size() << endl; return 0; }
over......