星星来啦 2024-03-30 20:45 采纳率: 70.6%
浏览 2
已结题

一个关于C++的问题

用C++做一下题目:
给你一个字符串 S 由小写英文字母组成。S 有多少个不同的非空子串?
子串是连续的子序列。
输入样例1:yay
输出样例1:5

输入样例2:aababc
输出样例2:17

输入样例3:abracadabra
输出样例3:55

求C++代码,急!希望5-10min能有回复!
谢!

  • 写回答

2条回答 默认 最新

  • 关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    问题: 求解给定字符串S中有多少个不同的非空子串。

    解决方案:

    1. 定义一个整型变量count,用于记录不同的非空子串的数量。
    2. 创建一个无序集合(或hashset),用于存储已经出现过的子串。
    3. 遍历字符串S的每一个字符,以该字符为起始位置,枚举所有可能的子串。
    4. 将枚举到的子串加入集合中。
    5. 最后,输出集合的大小,即为不同的非空子串的数量。

    参考代码如下:

    #include <iostream>
    #include <unordered_set>
    #include <string>
    
    using namespace std;
    
    int main() {
        string S;
        cout << "请输入字符串S: ";
        cin >> S;
    
        int count = 0;
        unordered_set<string> substrings;
    
        for (int i = 0; i < S.length(); i++) {
            for (int j = 1; j <= S.length() - i; j++) {
                string substring = S.substr(i, j);
                substrings.insert(substring);
            }
        }
        count = substrings.size();
    
        cout << "不同的非空子串的数量为: " << count << endl;
    
        return 0;
    }
    

    你可以在本地编译和运行该代码,输入字符串S并查看结果。希望对你有帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月30日
  • 已采纳回答 3月30日
  • 创建了问题 3月30日

悬赏问题

  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!