求序列中所有不同的连续子串的数量

蓝桥杯:不同子串

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main() {
    
    string str = "0100110001010001";
    // str ="aaab";
    map<string, int> ans; 
    // 求连续子串
    // 定义窗口大小 
    for (int i = 1; i <= str.size(); i++) {//定义窗口的大小,
        // 每次都从字符串始端,开始滑动窗口
        for (int j = 0; j <= str.size()-i; j++) //从最一开始提取窗口内的值。
        {
            
            string s = "";
            //k<j+i的原因是k是从j开始枚举的。
            for (int k = j; k < j+i && k <= str.size()-1; k++) {
                s = str[k] + s;
            } 
            ans[s]++;
        }
    } 
    cout << ans.size() << endl;
    return 0;
}
原文地址:https://www.cnblogs.com/forward-985/p/13806443.html