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() 方法来添加元素。

修改:

vector<string> strs;

替换为:

vector<string> strs;

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

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

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

修改: 将相关部分改为:

while (strs.size() < 4)
{
    cin >> str;
    strs.push_back(str);
}

3. 字符串输出说明

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

修改后的完整代码如下:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm> // 包含 sort 函数
using namespace std;

string Sort(vector<string>& strs)
{
    sort(strs.begin(), strs.end());
    string ans;
    string fir = strs.front();
    string last = strs.back();
    
    for (int i = 0; i < fir.size() && i < last.size(); i++)
    {
        if (fir[i] != last[i])
            break;
        ans += fir[i];
    }
    
    cout << "Common prefix: " << ans << std::endl;
    return ans;
}

int main() {
    string str;
    vector<string> strs;

    cout << "请输入四个字符串(按回车确认):" << endl;

    while (strs.size() < 4) // 使用 size() 来控制循环次数
    {
        cin >> str; // 从标准输入读取字符串
        strs.push_back(str); // 将读取的字符串添加到向量中
    }

    string s = Sort(strs);
    
    cout << "共同前缀: " << s << endl; // 明确说明输出内容
    
    return 0;
}

使用示例

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

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


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?