L1-058 6翻了 (15分)
题目详情:
JAVA:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String str;
str=in.nextLine();
str=str.replaceAll("6{10,}","27");//先替换
str=str.replaceAll("6{4,}","9");//后替换
System.out.println(str);
}
}
C++:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
string str;
int num=0,len;
getline(cin,str);//整行读取
len=str.size();
for(int i=0; i<len; i++)
{
if(str[i]=='6')
{
num++;//连续6的个数加1
if(num<4&&str[i+1]!='6')//6或66或666原样输出
{
cout<<setw(num)<<setfill('6')<<'6';
num=0;
}
if(num>3&&num<10&&str[i+1]!='6')//4~9个6输出9
{
cout<<'9';
num=0;
}
if(num>9&&str[i+1]!='6')//9个以上的6输出27
{
cout<<"27";
num=0;
}
}
else//当前字符不是6就输出
{
cout<<str[i];
num=0;
}
}
return 0;
}
//测试用例
//i 666 666666666.6666666666 6666.666666666666
//it is so 666 really 6666 what else can I say 6666666666
JAVA的正则表达式虽然简单省事,但C++效率更高。
永远相信美好🎈