天天看點

【PTA】6翻了(15分)

【PTA】6翻了(15分)
【PTA】6翻了(15分)

總結:

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;
		}
	}
}

           

繼續閱讀