62,621
社区成员
发帖
与我相关
我的任务
分享public class ReplaceBlankSpace {
public static void main(String[] args) {
String str="we are happy";
char []ch=str.toCharArray();
replace(ch,"%20".toCharArray());
}
public static void replace(char[] oldchar,char[] replacement){
if(oldchar==null||oldchar.length<=0){
return;
}
int numOfSpace=0;//空格数
for(int x=0;x<oldchar.length-1;x++){
if(oldchar[x]==' '){
numOfSpace++;
}
}
if(numOfSpace==0){
return;
}
int newcharlength=oldchar.length+(replacement.length-1)*numOfSpace;
char []newchar=new char[newcharlength];
System.arraycopy(oldchar, 0, newchar, 0, oldchar.length);
int pOld=oldchar.length-1;
int pNew=newchar.length-1;
System.out.print("未替换空格时的字符串:");
for(char old:newchar){
System.out.print(old);
}
System.out.println();
while(pOld>=0 && pNew>pOld){
if(oldchar[pOld]==' '){
newchar[pNew--]='0';
newchar[pNew--]='2';
newchar[pNew--]='%';
}else{
newchar[pNew--]=oldchar[pOld];
}
pOld--;
}
System.out.print("替换空格之后的字符串:");
for(char c:newchar){
System.out.print(c);
}
}
}public static int search(int []temp,int num){
if(temp==null||temp.length==0){ //如果数组为空或者数组长度等于0,返回-2
return -2;
}
int min=0;
int max=temp.length-1;
int mid;
while(min<=max){
mid=(min+max)/2;
if(num>temp[mid]){
min=mid+1;
}else if(num<temp[mid]){
max=mid-1;
}else if(num==temp[mid]){
return mid; //在数组中查找到数,返回索引
}
}
return -1; //如果数组之中没有要查找的数,返回-1
}[/quote]
判断,为空的时候下边没有计算的意义,还可以避免空指针System.out.println(" e a c v z ".replace(" ", "")); [quote=引用 5 楼 qnmdcsdn 的回复:] 恩,string有replace方法这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神

恩,string有replace方法这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神
恩,string有replace方法
这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神[quote=引用 2 楼 m2200 的回复:] 仅供参考:System.out.println(" e a c v z ".replace(" ", ""));
System.out.println(" we are happy ".replace(" ", "%20"));[/quote]兄弟,这个方法我肯定知道啊,我只是在将剑指offer上的题通过Java实现,以达到练习算法的目的啊。 [quote=引用 5 楼 qnmdcsdn 的回复:] 恩,string有replace方法这个我是知道的,只是想练习下算法题,然后这组代码有漏洞,末端是空格的话,就会出问题,自己解决不了,才来询问大神
public static int search(int []temp,int num){
if(temp==null||temp.length==0){ //如果数组为空或者数组长度等于0,返回-2
return -2;
}
int min=0;
int max=temp.length-1;
int mid;
while(min<=max){
mid=(min+max)/2;
if(num>temp[mid]){
min=mid+1;
}else if(num<temp[mid]){
max=mid-1;
}else if(num==temp[mid]){
return mid; //在数组中查找到数,返回索引
}
}
return -1; //如果数组之中没有要查找的数,返回-1
}仅供参考:System.out.println(" e a c v z ".replace(" ", ""));
System.out.println(" we are happy ".replace(" ", "%20"));