L1-058 6翻了(15分)
原文链接:https://pintia.cn/problem-sets/994805046380707840/problems/1111914599408664577
一开始就想到了字符数组,但是做到最后发现自己对string类函数的处理不清楚,所以换了一种方法:将输入数据放入字符数组里,然后依次判断查询由‘6’开头,查到后进行count++,判断有几个‘6’。如果不符合大于3个‘6’或者9个‘6’以上的就直接输出。
代码有些长.....
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(){
string s;
getline(cin,s);//可以接受空格
for(int i=0;i<s.length();i++){
if(s[i]=='6'){//检测到6开头
int count=0;
for(;i<s.length();i++){
if(s[i]=='6'){
count++;
}
else{
break;
}
}
//在此i指向输出的下一个位置,所以要减一
i--;
if(count>3&&count<=9){
cout<<"9";
}
else if(count>9){
cout<<"27";
}
else{
while(count--){
cout<<"6";
}
}
}
else{
cout<<s[i];
}
}
return 0;
}