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

C++如何不使用void函数将最长连续重复字符子串代码全部写在main中

实现方案

直接将原自定义函数longestConsecutivecharacter内的所有逻辑平移到main函数中调用该函数的位置即可,无需修改核心计算逻辑。我同时修复了原代码存在的数组越界、未初始化变量等问题,最终可运行代码如下:

#include <iostream>
#include <algorithm>
using namespace std;

int main(){   
    string letters; 
    cout << "Enter a string: ";
    cin >> letters; 
    cout << "The first longest consecutive repeating character substring is: ";
    
    if (letters.empty()) {
        return 0;
    }
    int finalResult = 1; 
    int letterCounter = 1; 
    char flcrcs = letters[0];

    for (int i = 0; i < letters.size() - 1; i++) { 
        if (letters[i] == letters[i + 1]) { 
            ++letterCounter; 
        }
        else { 
            if(letterCounter > finalResult) {
                flcrcs = letters[i];
            }
            finalResult = max(finalResult, letterCounter);
            letterCounter = 1; 
        }
    } 

    finalResult = max(finalResult, letterCounter);
    if (letterCounter == finalResult) {
        flcrcs = letters.back();
    }
    for(int i = 0; i < finalResult; i++) {
       cout << flcrcs;
    }

    return 0;
}

关键修改说明

  • 原代码循环访问letters[i+1]时存在越界风险,调整循环终止条件为i < letters.size() - 1解决该问题
  • 补充了flcrcs变量的初始化逻辑和末尾最长串校验逻辑,避免单字符输入、最长串在字符串末尾时的输出异常
  • 补充了<algorithm>头文件引用,保证max函数的可移植性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:08