题目描述
题解
先统计空格的数量,在此基础上扩充数组
int count = 0 ;
int len = strlen ( s) ;
for ( int i = 0 ; i < len; i++ ) {
if ( s[ i] == ' ' ) {
count++ ;
}
}
int newlen = len + count * 2 ;
char * result = malloc ( sizeof ( char ) * newlen + 1 ) ;
然后就填充就好了,遇到不是空格直接copy,遇到空格就填上字符。第一次坐老久,因为把下面这一段中最后一个括号里的j也–了,导致数组越界,还是要注意细节。
result[ j-- ] = '0' ;
result[ j-- ] = '2' ;
result[ j] = '%' ;
char * replaceSpace ( char * s) {
int count = 0 ;
int len = strlen ( s) ;
for ( int i = 0 ; i < len; i++ ) {
if ( s[ i] == ' ' ) {
count++ ;
}
}
int newlen = len + count * 2 ;
char * result = malloc ( sizeof ( char ) * newlen + 1 ) ;
for ( int i = len - 1 , j = newlen - 1 ; i >= 0 ; i-- , j-- )
{
if ( s[ i] != ' ' )
{
result[ j] = s[ i] ;
}
else
{
result[ j-- ] = '0' ;
result[ j-- ] = '2' ;
result[ j] = '%' ;
}
}
result[ newlen] = '\0' ;
return result;
}