首页 > 试题广场 >

空格替换

[编程题]空格替换
  • 热度指数:59890 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定一个string iniString 及其长度 int len, 已知该字符串中有空格,现要求编写程序将字符串中空格替换为“%20”。返回更改后的string。假设该字符串有足够的空间存放新增的字符,并且知道原字符的长度(小于等于1000),同时保证字符串由大小写的英文字母组成。

示例1

输入

"Mr John Smith",13

输出

"Mr%20John%20Smith"
示例2

输入

"Hello  World",12

输出

"Hello%20%20World"
import java.util.*;

public class Replacement {
    public String replaceSpace(String iniString, int length) {
     StringBuffer sb = new StringBuffer(iniString);
        for (int i = 0; i < sb.length() ; i++) {
            if(sb.charAt(i)==' '){
                sb.replace(i,i+1,"%20");
            }
        }
        String a = String.valueOf(sb);
        return a;
    }
}

为啥你们做的都那么麻烦 ,是我想简单了吗?

再补一个
publicString replaceSpace(String iniString, intlength) {
   returniniString.replaceAll(" ", "%20");
}


编辑于 2020-07-14 00:19:37 回复(0)
import java.util.*;

public class Replacement 
{
    public String replaceSpace(String iniString, int length) 
    {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<length;i++)
        {
            String s=""+iniString.charAt(i);
            if(!s.equals(" "))
            {
                sb.append(s);
            }
            else
            {
                sb.append("%20");
            }
        }
        return sb.toString();
    }
}
发表于 2020-03-27 22:42:21 回复(0)
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Replacement {
    public static String replaceSpace(String iniString, int length) {
        // write code here
        List<String> list = new LinkedList<>();
        for (int i = 0; i <length ; i++) {
            list.add(String.valueOf(iniString.charAt(i)));
        }
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).equals(" ")){
                list.remove(i);
                list.add(i,"%20" );
            }
        }
        StringBuilder sb = new StringBuilder();
        for(String s:list){
            sb.append(s);
        }
        return String.valueOf(sb);
    }
}

发表于 2020-03-11 15:18:44 回复(0)
import java.util.*;
/*解题思路:先遍历一遍字符串计算出字符串里有多少个空格,然后每个空格被替换为%20,
么结果字符串的长度是原来字符串的长度加上空格个数*2(每个空格多2位)
然后从后往前遍历原字符串如果遇到空格替换为%20,不过不是空格就放原字符,时间复杂度O(n)*/
public class Replacement {
    public String replaceSpace(String iniString, int length) {
        // write code here
    	int count = 0;
    	
    	for (int i = 0; i < length; i++) {
    		char c = iniString.charAt(i);
    		if (c == ' ') {
    			count++;
    		}
    	}
    	
    	int resCount = length + count * 2;
    	int j = resCount - 1;
    	char[] res = new char[resCount];
    	
		for (int i = length - 1; i >= 0; i-- ) {
    		char c = iniString.charAt(i);
    		if (c != ' ') {
    			res[j] = c;
    			j--;
    		}
    		else {
    			res[j] = '0';
    			j--;
    			res[j] = '2';
    			j--;
    			res[j] = '%';
    			j--;
    		}
		}
		
    	return String.copyValueOf(res);
    }
}

发表于 2019-12-11 22:50:20 回复(0)
正则最简单
public String replaceSpace(String iniString, int length) {
        iniString=iniString.replaceAll("[^a-zA-Z\\s]","");//去掉非字母和空格的
        iniString=iniString.replaceAll("\\s","%20");//替换空格
        return iniString;
    }

发表于 2018-09-23 16:17:04 回复(0)
这是调用了replaceAll函数;
这里遍历了一遍字符串,非空格依次赋值,将空格替换后赋值给新的字符串,返回新字符串
发表于 2018-09-15 10:58:43 回复(0)
        String aString = "Hello  World";
        String[] temp = aString.split(" ");
        String result = "";
        for (int i = 0; i < temp.length; i++) {
            if (i == temp.length -1) {
                result += temp[i];
                break;
            }
            result += temp[i] + "%20"; 
        }
        System.out.println(result);    // 这种方法为何不行???
发表于 2018-08-14 10:00:52 回复(0)
利用正则表达式解答

import java.util.*;

public class Replacement {
    public String replaceSpace(String iniString, int length) {
        // write code here
       
        String str=iniString.replaceAll("\\d+","");//将字符串中所有的数字删除
        String str1=iniString.replaceAll(" ","%20");//将字符串的空格替换成%20
        return str1;
    }
}
发表于 2018-04-09 20:22:35 回复(0)
iniString = iniString.replaceAll(" ", "%20");

发表于 2018-01-23 20:52:37 回复(0)
import java.util.*;

public class Replacement {
    public String replaceSpace(String str,int length) {
     return   str.replaceAll((" "),"%20");
    }
}
发表于 2017-09-03 17:01:13 回复(0)
public String replaceSpace(String iniString, int length) { // write code here  char space = " ".charAt(0);  if (length <= 0){ return "";  } if (length == 1){ if (iniString.equals(" ")){ return "%20";  }
    } char[] chars = iniString.toCharArray();  StringBuilder stringBuffer = new StringBuilder();  for (int i = 0 ; i < length; i ++){ char aChar = chars[i];  if (aChar == space){
            stringBuffer.append("%20");  }else {
            stringBuffer.append(aChar);  }
    } return stringBuffer.toString(); }
发表于 2017-08-21 22:01:11 回复(0)
public String replaceSpace(String str, int length) {
		
//		return str.replaceAll(" ", "20%");
		
		StringBuilder sb = new StringBuilder();
		for(int i=0;i<str.length();i++){
			char c = str.charAt(i);
			if(c ==' '){
				sb.append("%20");
			}else{
				sb.append(c);
			}
		}
		
        return sb.toString();
    }
编辑于 2017-06-21 15:58:31 回复(0)
import java.util.*;

public class Replacement {
    	public String replaceSpace(String iniString, int length) {
        // write code here
		StringBuffer sb=new StringBuffer();
		for(int i=0;i<length;i++){
			if(iniString.charAt(i)==' '){
				sb.append("%20");
			}else{
				sb.append(iniString.charAt(i));
			}
		}
		return sb.toString();
    }	
}

发表于 2017-06-06 13:33:52 回复(0)
//方式一:
    public String replaceSpace(String iniString, int length) {
        if(iniString==null||"".equals(iniString)||length<=0) return iniString;
        return iniString.replace(" ","%20");
    }
 //方式二
     public String replaceSpace(String iniString, int length) {
        if(iniString==null||"".equals(iniString)||length<=0||iniString.length()!=length) return iniString;
         StringBuffer sb=new StringBuffer("");
         for(int i=0;i<length;i++){
             if(iniString.charAt(i)==' ') sb.append("%20");
             else sb.append(iniString.charAt(i));
         } 
         return sb.toString();
     }
//方法三:一样的道理
 public String replaceSpace(String iniString, int length) {
        if(iniString==null||"".equals(iniString)||length<=0||iniString.length()!=length) return iniString;
          StringBuffer str=new StringBuffer(iniString);
          str.insert(0,'#');
          str.append('#');
          String[] value=str.toString().split(" ");
          StringBuffer sb=new StringBuffer();
         for(int i=0;i<value.length;i++){
             sb.append(value[i]);
             if(i==value.length-1) break;
             else sb.append("%20");
         } 
          sb.deleteCharAt(0);
          sb.deleteCharAt(sb.length()-1);
         return sb.toString();
     }

编辑于 2017-05-10 16:24:19 回复(0)
import java.util.*;

public class Replacement {
    public String replaceSpace(String iniString, int length) {
        // write code here
        String string1 = iniString.replaceAll(" ", "%20");
        return string1;
    }
}
发表于 2017-03-02 18:28:48 回复(0)

import java.util.*;

public class Replacement {
    public String replaceSpace(String iniString, int length) {
        // write code here
        return iniString.replaceAll("\\s","%20");
    }
}

发表于 2017-02-26 18:19:08 回复(0)
public static String replaceSpace(String iniString, int length) {
StringBuffer str = new StringBuffer();
for(int i=0;i<length;i++){
if(iniString.charAt(i) == ' '){
str.append("%20");
}else{
str.append(iniString.charAt(i));
}
return str.toString();
    }

发表于 2017-01-01 15:18:02 回复(0)
import java.util.*;

public class Replacement {
    public String replaceSpace(String iniString, int length) {
        // write code here
        if (iniString == null || length <=0)
            return null;
        StringBuilder sb = new StringBuilder();
        for (int i=0; i<length; i++){
            if (iniString.charAt(i) == ' '){
                sb.append('%');
	            sb.append('2');
                sb.append('0');
            }
            else
                sb.append(iniString.charAt(i));
        }
        return sb.toString();
    }
}

发表于 2016-12-30 10:42:04 回复(0)