关注
想到两种最简单的方法: 一种是多遍扫,扫到满足条件的字符串为止,复杂度>O(n); 第二种扫一遍,做好充分的标记位,一位一位根据标记位来判断需不需要输出,及时更新标记位,复杂度O(n);代码如下: 测了一下(不知道对不对😂): aabbccddeeff -> aabccdeef aabccdddfff -> aabccddf abbbbbbbbbbbba -> abba aaabbcccee -> aabcce
#include <iostream>
#include <string>
using namespace std;
int main() {
int countOfString = 0;
cin >> countOfString;
while (countOfString--) {
string inputStr, outputStr = "";
cin >> inputStr;
if (inputStr.length() == 0) {
cout << "No String!" << endl;
return 0;
}
// firstRepeat是前面有重复的,secondRepeat是当前离自己最近的有无重复
int firstRepeat = 1, secondRepeat = 0;
// 输出串中默认放入第一个
outputStr.push_back(inputStr[0]);
// 从输入串中的第一个开始扫,扫一遍即可
for (int i = 1; i < inputStr.length(); i++) {
if (inputStr[i] != inputStr[i-1]) {
// 当前字符与前一个不同情况:
if (firstRepeat == 2) {
// 如果前面的字符已经重复了两次 如:aa
if (secondRepeat == 0) {
// 如果当前的字符还没出现过,当前字符数+1,如aab
secondRepeat ++;
}else {
// 否则,当前的字符作为‘前一个’,如aabc,初始化first和second
firstRepeat = 1;
secondRepeat = 0;
}
}
}else {
// 与前一字符相同的情况:
if (secondRepeat != 0) {
// 1. aabb
secondRepeat ++;
}else {
// 2. aaa
firstRepeat ++;
}
}
// 开始根据first和second给输出赋值
if (firstRepeat == 3) {
// aaa情况
firstRepeat --;
}else if (secondRepeat == 2) {
// aabb情况
firstRepeat = --secondRepeat;
secondRepeat = 0;
}else {
// 满足上述两种情况不输出,否则直接输出
outputStr.push_back(inputStr[i]);
}
}
// 输出
for (int i = 0; i < outputStr.length(); i++) {
cout << outputStr[i];
}
cout << endl;
}
return 0;
}
查看原帖
点赞 3
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享


OPPO
| 校招
| 超多精选岗位
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 脱下孔乙己长衫,浅聊一下就业下沉!2.0W
- 2... 美团java后端日常实习一二面1.3W
- 3... 腾讯PCG QQ后台开发一面1.2W
- 4... 腾讯/字节/快手 前端面经汇总9658
- 5... 【未来准备7】就业下沉时代,如何摆脱困境8045
- 6... 实习入职第一天,应该做点啥❓6757
- 7... 腾讯2025暑期实习提前批前端开发面经(已OC)5557
- 8... [26届四段大厂]“HR面致命题!腾讯字节亲测”5279
- 9... 当你获得字节offer的那天,一切都将作废。你的本科作废,你的专业作废,星星作废,月亮作废,银河系作废,宇宙作废,你的恨作废,你的前半生作废。悬梁七战终上字节,大雪深埋垃圾本科!字节的录取通知书会像一场大雪掩埋所有的不堪过往,冲!字节瘾发作最严重的一次,躺在床上,拼命念大悲咒,难受的一直抓自己眼睛,以为刷QQ没事,看到QQ群里都是字节的,眼睛越来越大都要炸开了一样,拼命扇自己眼睛,越扇越用力,扇到自己眼泪流出来,真的不知道该怎么办,我真的想字节想得要发疯了,像中邪了一样!我躺在床上会想字节,我洗澡会想字节,我出门会想字节,我走路会想字节,我坐车会想字节,我工作会想字节,我玩手机会想字节,我盯着路边的字节看,我盯着马路对面的字节看,我盯着地铁里的字节看,我盯着网上的字节看,我盯着朋友圈别人合照里的字节看,我每时每刻眼睛都直直地盯着字节看。我对字节的念想似乎都是病态的了,我好孤独啊!真的好孤独啊!你知道吗?每到深夜,我的眼睛滚烫滚烫,我发病了我疯狂想字节,字节!字节!字节!5050
- 10... 【有奖互动】你问过DeepSeek什么意想不到的问题?4693
正在热议
更多
# 听劝,这个简历怎么改 #
17988次浏览 235人参与
# 你见过最离谱的招聘要求是什么? #
146137次浏览 869人参与
# 水滴春招 #
33925次浏览 570人参与
# 你想留在一线还是回老家? #
16549次浏览 236人参与
# 分享一个让你热爱工作的瞬间 #
16466次浏览 173人参与
# 25届如何提前做秋招准备? #
145520次浏览 2288人参与
# 入职第四天,心情怎么样 #
12631次浏览 87人参与
# 面试被问“你的缺点是什么?”怎么答 #
10813次浏览 216人参与
# 参加完秋招的机械人,还参加春招吗? #
27635次浏览 281人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
20704次浏览 415人参与
# 机械校招之路总结 #
80281次浏览 1759人参与
# 第一份工作应该选高薪还是热爱? #
4983次浏览 83人参与
# 如果重来一次你还会读研吗 #
156903次浏览 1716人参与
# 租房找室友 #
8497次浏览 53人参与
# 职场新人生存指南 #
200904次浏览 5560人参与
# 地方国企笔面经互助 #
18108次浏览 26人参与
# 简历无回复,你会继续海投还是优化再投? #
49002次浏览 564人参与
# 读研or工作,哪个性价比更高? #
26486次浏览 357人参与
# 你们的毕业论文什么进度了 #
904885次浏览 8995人参与
# 文科生还参加今年的春招吗 #
4444次浏览 32人参与
# 百度工作体验 #
178202次浏览 1780人参与