總結:
1、自己做的時候用的是字元串的查找和替換:a.find(), a.replace() ,然後一起輸出。扣了一分。
2、老師的代碼是直接一個個輸出,如果是6就計數,再判斷對應輸出。不得不說十分的妙,而且感覺更簡單。
記錄一下自己糟糕的思路和老師清晰簡潔的思路:
(那個時候還記得字元串的替換函數,我覺得我又可以了)
14分的WA代碼:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
getline(cin,a);
string b="6666666666",c="6666";
while(a.find(b,0)!=-1)
{
int temp1=a.find(b,0);
int sum=0;
int temp11=a.find(' ',temp1);
sum=temp11-temp1;
a=a.replace(temp1,sum,"27");
}
while(a.find(c,0)!=-1)
{
int temp2=a.find(c,0);
int sum2=0;
int temp22=a.find(' ',temp2);
sum2=temp22-temp2;
a=a.replace(temp2,sum2,"9");
}
cout<<a;
return 0;
}
AC代碼:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char s[1001];
scanf("%[^\n]", s);
int i = 0, j;
while(i<strlen(s))
{
if(s[i]!='6')
{
cout << s[i];
i++;
}
else//目前s[i]為6
{
j = i;
while(s[j]!='\n' && s[j]=='6') j++;//找不是6的位置
if(j-i > 9) cout << "27";
else if(j-i > 3) cout <<"9";
else
{
for(; i<j; i++) cout << "6";
}
i = j;
}
}
}