问题描述
https://www.lintcode.com/problem/space-replacement/description?_from=ladder&&fromId=6
教训:java中单引号代表char,双引号代表string
public int replaceBlank(char[] string, int length) {
int num=0;//konggeshu
int i=0;
while(i<length){
if(string[i]==' '){
num++;
}
i++;
}
int newnum=length+2*num;
char []ch2=new char[newnum];
int j=0;
for(i=0;i<length;i++){
if(string[i]!=' '){
ch2[j++]=string[i];
}else{
ch2[j++]='%';
ch2[j++]='2';
ch2[j++]='0';
}
}
/*
string=Arrays.copyOf(string,length+2*num);
i=0;
while(i<length+2*num){
string[i]=ch2[i];
i++;
}
*/
int t=0;
while(t<newnum){
string[t]=ch2[t];
t++;
}
// System.out.println(string);
return length+2*num;
}
作者:书剑江山
来源:CSDN
原文:https://blog.csdn.net/abbcbbd/article/details/51306914
版权声明:本文为博主原创文章,转载请附上博文链接!
挑战
在原字符串(字符数组)中完成替换,不适用额外空间
public int replaceBlank(char[] string, int length) {
if(string == null){
return 0;
}
int num=0;//konggeshu
int i=0;
while(i<length){
if(string[i]==' '){
num++;
}
i++;
}
int newnum=length+2*num;
for (int j = newnum; j >= 0; j--){
if(string[j]!=' '){
string[j+2*num] = string[j];
}else{
string[j+2*num] = '0';
string[j+2*num-1] = '2';
string[j+2*num-2] = '%';
num--;
}
}
return newnum;
}
网友评论