算法(剑指Offer05 替换空格)

题目:
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
例:

输入:s = "We are happy."
输出:"We%20are%20happy."

方法一:
该方法是我第一次就想到的,因为是刚学完正则表达式,所以尝试一下,该方法没有任何意义。

public String replaceSpace(String s) {   
        return s.replaceAll("\\s", "%20");
    }

方法二:
该方法是看解析找到的,认为比较好的一个方法:即迭代字符串判断值,若为空格则改变。1
解析:

  1. 一个为字符串三倍长的char[]数组,用来存储替换后的字符串。
  2. 一个int变量,用来记录当前数组的光标。
  3. 循环迭代字符串取出传给一个临时字符变量。
  4. 判断该变量是否为空格,若是则在数组后三个中存入‘%20’,若不是,传入临时字符变量。
  5. 最后将数组变为字符串返回。
public String replaceSpace(String s) {
    char[] cs = new char[s.length()*3];//字符串长三倍的数组
    int size = 0;//记录数组的index
    for(int i=0;i<s.length();i++){//循环取出字符串中数据,传入cs数组。
        char c = s.charAt(i);
        if(c == ' '){
            cs[size++] = '%';
            cs[size++] = '2';
            cs[size++] = '0';
        }else{
            cs[size++] = c;
        }
    }
    String str = new String(cs,0,size);
    return str;
}

还有一种是用StringBuffer代替字符数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值