我正在做一个我们必须编码字符串的问题。问题如下:
给定一个字符串,您的任务是完成函数encode,返回给定字符串的行程编码字符串。例如。如果输入字符串是
.columns
,则该函数应返回.agg()
。您需要完成函数编码,该函数只接受一个参数,即要编码的字符串,并返回编码的字符串。
"wwwwaaadexxxxxx"
如果我注释掉"w4a3d1e1x6"
语句,则会打印正确的输出,除非它前面有空格。
我还尝试将字符串char *encode(char *src)
{
char previous=src[0];
int i=0;
int count=0;
string s="";
for(i=0;src[i]!='\0';i++){
if(previous==src[i])
count++;
if(previous!=src[i]){
s=s+previous+to_string(count);
count=1;
previous=src[i];
}
//cout << i << " " ;
if(src[i+1]=='\0'){
s+=previous+to_string(count);
}
}
// line for reference
// cout << " " ;
return &s[0];
}
input :
hchzvfrkmlnozjk
correct output(as given by the website) :
h1c1h1z1v1f1r1k1m1l1n1o1z1j1k1
my output :
°¼!
内容复制到这样的src内容中,方法是将行代码更改为
cout
现在输出是原始输入字符串,即s
我们无法访问驱动程序,并且我们必须完成该功能的网站完成。
为什么for(i=0;i!='\0';i++){
src[i]=s[i];
}
return src;
}
会更改输出?在第二种情况下,为什么"hchzvfrkmlnozjk"
的原始内容不会被字符串cout
的内容覆盖?有什么方法可以解决这个问题吗?
问题可以在这里找到:http://www.practice.geeksforgeeks.org/problem-page.php?pid=700243