[蓝桥杯2019初赛]不同子串

用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......

原文地址:https://www.cnblogs.com/hello-dummy/p/12346955.html