这道题起初一直卡在最后一个测试点,答案没问题,就是超时,找了好久的错,百思不得其解。
后来在网上找到一份整体思路几乎完全相同的代码,经过反反复复对比。
终于发现了问题,如下面注释所示。写成b=b+temp 就会超时,而b+=temp速度就极快。
简直可以用天差地别来形容一个5ms 一个超时...
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main(){
int i,j,d,n;
string a;
string b;
cin>>a>>n;
for(i=0;i<n-1;i++){
int ans=0;
char temp=a[0];
a=a+" ";
for(j=0;j<a.length();j++){
if(a[j]==temp){
ans++;
}else{
char s_ans=ans+'0';
b+=temp; //b=b+temp; 写成注释会超时
b+=s_ans; //b=b+s_ans;
temp=a[j];
ans=1;
}
}
if(b!=""){
a=b;
}
b="";
}
cout<<a<<endl;
return 0;
}