首页 > 试题广场 > 替换空格
[编程题]替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

285个回答

添加回答
推荐
//思路
//1:从前往
   查看全部
编辑于 2015-12-07 18:51:44 回复(209)
解题思路:
1.从后往前遍历,则替换和插入,不影响下一个需要遍历的字符的位置。
2.找到空格,先把空格替换成‘0’,然后在该位置之前插入“%2”
public class Solution {
    public String replaceSpace(StringBuffer str) {
        int i = str.length() - 1;
        while(i >= 0){
            if(str.charAt(i)== ' '){
                str.setCharAt(i,'0');
                str.insert(i, "%2");
            }
            i--;
        }
        return str.toString();
    }
}
发表于 2018-12-10 23:50:20 回复(0)
public String replaceSpace(StringBuffer str) {
        String s = str.toString();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)==' '){
                s = s.substring(0, i)+"%20"+s.substring(i+1);
            }
        }
        return s;
    }
发表于 2018-12-10 15:57:55 回复(0)
public String replaceSpace(StringBuffer str) { int loc; //记录空格的位置 while((loc=str.indexOf(" "))!=-1){
      str.replace(loc,loc+1,"%20");//遍历字符buf,把空格替换
    } return str.toString();
}

编辑于 2018-12-01 20:11:58 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        StringBuffer sb = new StringBuffer();
        for(int i = 0;i<str.toString().length();i++){
            char temp = str.toString().charAt(i);
            if(temp == ' '){
                sb.append("%20");
                continue;
            }
            sb.append(temp);
        }
        return sb.toString();
    }
}
发表于 2018-11-28 22:47:25 回复(0)
//推荐用StringBuilder 
public class Solution {
    public String replaceSpace(StringBuffer str) {
        StringBuilder str2=new StringBuilder();String str_tem=str.toString();
        
    for(int i=0;i<str_tem.length();i++)
            if (str_tem.charAt(i)==' ')
                str2.append("%20");
            else
                str2.append(str_tem.charAt(i));
        return str2.toString();
        }
}
发表于 2018-11-19 16:43:45 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        for(int i = 0; i < str.length(); i++){
            if(str.charAt(i) == ' '){
                str.deleteCharAt(i);
                str.insert(i, '%');
                str.insert(i+1, '2');
                str.insert(i+2, '0');
            }
        }
        return str.toString();
    }
}
发表于 2018-11-18 23:06:40 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        String s = new String(str);
        return s.toString().replaceAll(" ", "%20");
    }
}
这样写通过了……

发表于 2018-11-08 16:22:31 回复(0)
public String replaceSpace(StringBuffer str) {    
        return str.toString().replace(" ", "%20");
    }
笑死 这都能通过。。
发表于 2018-11-07 09:44:02 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        int m=str.length();
        for(int i=0;i<m;i++)
            if(str.charAt(i)==' ')
            {
                str.deleteCharAt(i);
                str.insert(i, "%20");
            }
            
                
        return str.toString();
        
        
    }
}

您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为87.50%

测试用例:
" "

对应输出应该为:

"%20%20%20"

你的输出为:

"%20 "
//参考答案一个空格用了三次代替,无语

发表于 2018-11-02 22:58:16 回复(0)
public class Solution {
      public static String replaceSpace(StringBuffer str)      {           String tmp = str.toString();           return tmp.replace(" ","%20");        
      }               public static void main(String[] args) {         StringBuffer str = new StringBuffer("We Are Family");         System.out.println(replaceSpace(str));          }      }
    主要是StringBuffer转String,然后用String的replace方法,当然题目是想我们自己实现细节,而不是调用内置函数,我是这样想的。
发表于 2018-10-25 17:13:29 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
         for(int i=0;i<str.length();i++){
             if(str.charAt(i)==' '){
                 str.replace(i, i+1, "%20");
             }
         }
         return str.toString();
    }
}

发表于 2018-10-24 21:41:07 回复(0)
//算法思想
/*遍历整个字符串,利用StringBuffer类中的charAt()和replace(),insert()函数进行字符的替换
* 和插入,最后用toString方法返回String对象。

发表于 2018-10-16 16:39:37 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        int len = str.length();
        int spaceCount = 0;
        for (int i=0; i<len; i++){
            if (str.charAt(i) == ' ')
                spaceCount++;
        }
        int newLength = len + 2*spaceCount;
        str.setLength(newLength);
        int cursor = str.length() - 1;
        for (int i=len-1; i>=0; i--){
            if (str.charAt(i) == ' '){
                str.setCharAt(cursor--, '0');
                str.setCharAt(cursor--, '2');
                str.setCharAt(cursor--, '%');
            }
            else
                str.setCharAt(cursor--, str.charAt(i));
        }
        return str.toString();
    }
}

发表于 2018-10-13 16:20:17 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        String s1 =new String(str);
        s1=s1.replace(" ","%20");
        return s1;
    }
}

发表于 2018-10-12 21:39:26 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        String mystr=new String(str);
        return mystr.replaceAll(" ","%20");
    }
}
发表于 2018-09-26 14:44:10 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        String result = str.toString();
        result = result.replaceAll(" ","%20");
        return result;
    }
}

发表于 2018-09-20 12:28:52 回复(0)
return str.toString().replace(" ","%20");
发表于 2018-09-18 18:51:21 回复(0)
/**
 * 替换空格
 * 题目描述
 * 请实现一个函数,将一个字符串中的每个空格替换成“%20”。
 * 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 * @author yhd
 * 解题思路:
 *    由于接收的已经是StringBuffer类了,所以可以直接遍历字符串,
 *    当遇到空格时,调用其中的方法delete(int start, int end)删除空格,再调用insert(int offset, String str)方法插入%20即可
 */

public static String replaceSpace(StringBuffer str) {         int s = 0;             while(s < str.length()) {                 if(str.charAt(s) == ' ') {                     str.delete(s,s+1).insert(s, "%20");                 }                 s++;             }             return str.toString();         }


发表于 2018-09-17 19:47:32 回复(0)
package StringReplaceSpace;
import java.util.*;
public class Solution {

    public static void main(String[] args) {
        System.out.println("请输入相应的字符串:");
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String newstr=sc.nextLine();
            Solution s=new Solution();
            String result=s.replaceSpace(newstr);
            System.out.println(result);
        }
    }

    /*
     * 定义方法Solution 返回值类型:String 参数:StringBuffer str:因为String修饰的类型是不可改变的。
     */

    public String replaceSpace(String newstr) {
        // 首先判断字符串是否为空
        if (newstr == null) {
            return null;
        }

        StringBuilder sb = new StringBuilder();
        // 循环遍历获取到每一个的字符串
        for (int i = 0; i < newstr.length(); i++) {
            // 判断是否是空格
            if (newstr.charAt(i) == ' ') {
                sb.append('%');
                sb.append('2');
                sb.append('0');
            } else {
                sb.append(newstr.charAt(i));
            }
        }
        return sb.toString();
    }

}
 
发表于 2018-09-17 16:54:38 回复(0)
public class Solution {
    public String replaceSpace(StringBuffer str) {
       int n = str.length();
        if(str == null) return null;
        for(int i = 0;i<str.length();i++){
            char c = str.charAt(i);
            if(c == ' '){
                str.replace(i,i+1,"%20");
            }
        }
        String s = str.toString();
        return s;
    }
}
上面这段代码可以通过,但是把for循环中i<str.length() 换成 i<n 就会报错,求助为什么?
报错信息如下:
您的代码已保存 答案错误:您提交的程序没有通过所有的测试用例 case通过率为87.50% 测试用例: " " 对应输出应该为: "%20%20%20" 你的输出为: "%20 "
编辑于 2018-09-15 17:33:40 回复(0)

扫一扫,把题目装进口袋

牛客网,程序员必备求职神器

扫描二维码,进入QQ群

扫描二维码,关注牛客网公众号

  • 公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
  • 联系方式:010-60728802(电话) admin@nowcoder.com
  • 牛客科技©2018 All rights reserved
  • 京ICP备14055008号-4
  • 京公网安备 11010502036488号