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
相关产品推荐
相关产品推荐

