ZBLOG

#include #include #include #include // 包含 sort 函数 using namespace std; string Sort(vector& strs) { sort(strs.begin(), strs.end()); string ans; string fir = strs.front(); string last = strs.ba...

你的代码有几个问题导致编译或运行时错误。以下是你代码中的主要问题及其解决方案:

1. 向量未初始化

main 函数中,你声明了一个字符串向量 vector<string> strs;,但没有指定它的大小。因为向量是动态大小的,你应该使用 push_back() 方法来添加元素。

修改:

  1. vector<string> strs;

替换为:

  1. vector<string> strs;

然后在输入字符串时使用 strs.push_back(str); 来添加元素。

2. 输入循环条件和索引管理

当前的输入逻辑假设可以直接通过索引访问向量,这是不正确的,因为 strs 在创建时是空的。

修改: 将相关部分改为:

  1. while (strs.size() < 4)
  2. {
  3. cin >> str;
  4. strs.push_back(str);
  5. }

3. 字符串输出说明

在最后一行,输出字符串时应更明确一下提示文字。

修改后的完整代码如下:

  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm> // 包含 sort 函数
  5. using namespace std;
  6. string Sort(vector<string>& strs)
  7. {
  8. sort(strs.begin(), strs.end());
  9. string ans;
  10. string fir = strs.front();
  11. string last = strs.back();
  12. for (int i = 0; i < fir.size() && i < last.size(); i++)
  13. {
  14. if (fir[i] != last[i])
  15. break;
  16. ans += fir[i];
  17. }
  18. cout << "Common prefix: " << ans << std::endl;
  19. return ans;
  20. }
  21. int main() {
  22. string str;
  23. vector<string> strs;
  24. cout << "请输入四个字符串(按回车确认):" << endl;
  25. while (strs.size() < 4) // 使用 size() 来控制循环次数
  26. {
  27. cin >> str; // 从标准输入读取字符串
  28. strs.push_back(str); // 将读取的字符串添加到向量中
  29. }
  30. string s = Sort(strs);
  31. cout << "共同前缀: " << s << endl; // 明确说明输出内容
  32. return 0;
  33. }

使用示例

程序会提示用户输入四个字符串,然后计算并输出它们的公共前缀。请注意确保每次输入后按 Enter 键。

这样修改后,程序应该可以正常运行,并根据用户输入返回正确结果。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=19092

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?