感觉都是直接遍历都能解出来。
字符串那个两层遍历,第一层是下标从0到最后,第二层是字符串长度从1到size / 2;
然后比较字串的子串是否相等,把相等的字串放到set中。最后打印set的size就行了
string str;
    unordered_set<string> strSet;
    cin >> str;
    for(int pos = 0; pos < str.size(); ++pos)
        for(int len = 1; len <= str.size() / 2; ++len)
    {
        if(str.substr(pos, len) == str.substr(pos + len, len))
        {
            strSet.insert(str.substr(pos, len));
        }
    }
    cout << strSet.size() << endl;