描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

给定的字符串长度不超过100。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。

示例

字符串:s = "we  are happy";
结果:result = "we%20%20are%20happy";

字符串:s = "happy ";
结果:result = "happy%20";

题解

注释的部分是我自己的理解,通过s.split("\s+")方法将字符串按空格分隔开,存进一个数组,不好的地方是不知道哪里有空格,空格有多少个,因此运行失败了。通过查阅才知道有charAt()方法,更加快速方便。

①字符串有一个方法charAt(),可以获取到每一个字符串字符的值。比如遍历打印字符串的每一个元素:

for(int i=0;i<s.length;i++){
    System.out.println(s.charAt(i));
}

②字符串还有第二种方法,replaceAll(String s1,String s2),可以将s1替换成s2,更加快捷。

代码

import java.util.*;


public class Solution {
    /**
     * @param s string字符串 
     * @return string字符串
     */
    public String replaceSpace (String s) {
        /*String result = "";
        String b = "";
        if(s == null || s.equals("")){
            return result;
        }else{
            String [] arr = s.split("\\s+");
            if(arr.length == 1){
                return arr[0];
            }else{
                for(int i = 0;i<arr.length;i++){
                    if(i < (arr.length -1)){
                        b = arr[i]+"%20";
                    }else{
                        b = arr[i];
                    }
                    result = result + b;
                }
                return result;
            }
        }*/

        //第一种解法
        String result = "";
        for(int i = 0;i<s.length();i++){
            if(s.charAt(i) == ' '){
                result = result + "%20";
            }else{
                result = result + s.charAt(i);
            }
        }
        return result;

        //第二种解法
        String result = s.replaceAll(" ","%20");
        return result;
    }     
}