You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode最长公共前缀问题:vector<string>元素修改异常求助

LeetCode最长公共前缀代码调试问题

算法思路

我用C++解决LeetCode的最长公共前缀问题,思路是:循环逐一比较vector中相邻的字符串,若字符串不相等则截断所有字符串的最后一个字符;当所有字符串均相等时,返回该字符串作为公共前缀。

运行异常

以输入vector["flower","flow","flight"]为例,程序陷入无限循环,且字符串截断到"flow"后便无法继续截断。

调试中的诡异现象

执行vct[i] = vct[i].substr(0,z)语句后,打印vct[i].substr(0,z)能得到预期的截断后值,但vct[i]并未被修改;若直接使用固定值如vct[i] = vct[i].substr(0,1)则可正常修改,使用变量z时就失效。

我尝试将LeetCode传入的vector复制到自定义变量中,结果依旧;即使在代码开头修改vector内的字符串,后续通过循环变量修改也会失效,且编译器无报错。

我的代码

class Solution {
public:
 
    string longestCommonPrefix(vector<string>& vct) {
        int z = vct[0].size() -1  ;
        int len = vct.size();
        int count = 0;

        salto:  
        for (int i=0 ; i<len && z > 0 ; i++) cout << vct[i]<< " " <<  z<< endl;

        for (int i=0 ; i<len-1 ; i++){
            if (vct[i] != vct[i+1]) 
                for (int i=0 ; i<len ; i++) {
                    vct[i] = vct[i].substr(0,z);
                }
                z-=1;
                goto salto;  
        }
    }
};

部分运行输出

flower
flow
flight
flower
flow
flight
flowe
flow
fligh
flow
flow
flig
flow
flow
flig
flow
flow
flig

内容的提问来源于stack exchange,提问作者Manuel Varagona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:36:08