你的代码有几个问题导致编译或运行时错误。以下是你代码中的主要问题及其解决方案:
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助手提供,问题来源于学员提问