PAT L1-058. 6翻了
原题链接
简单
作者:
青丝蛊
,
2021-04-09 15:34:17
,
所有人可见
,
阅读 270
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s; getline(cin, s);
for (int i = 0; i < s.size(); i++) {
if (s[i] == '6') {
int j;
for (j = i; j < s.size() && s[j] == '6'; j++) ;
j = j - i; // '6'的个数
if (j > 9) cout << "27";
else if (j > 3) cout << '9';
else{
string t(j,'6'); cout << t;
}
i += j - 1;
}
else cout << s[i];
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s; getline(cin, s);
int pos = s.find('6', 0);
while (pos != -1)
{
int i;
for (i = pos; i < s.size() && s[i] == '6'; i++);
int cnt = i - pos;
if (cnt > 9) s.replace(pos, cnt, "27");
else if (cnt > 3) s.replace(pos, cnt, "9");
pos = s.find('6', pos + 1); // 注意这不能+cnt,已经修改了原来的字符串,长度发生了变化
}
cout << s;
return 0;
}