替换空格---剑指Offer

替换空格

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


解题思路:

  1. 查找到所有空格的位置
  2. 将空格替换成相应的字符串

提供API说明:

indexOf(String str ,int fromIndex):

  • 参数:
    • str - 要搜索的子字符串。
    • fromIndex - 开始搜索的索引位置。
      返回:
      指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

substring(index beginIndex ,int endIndex):

  • 参数:
    • beginIndex - 起始索引(包括)。
    • endIndex - 结束索引(不包括)。
  • 返回:
    • 指定的子字符串。
  • 抛出:
    • IndexOutOfBoundsException - 如果 beginIndex 为负,或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex。

代码如下:

public class Solution {
    public String replaceSpace(StringBuffer str) {
        //所要的结果集
        String result = new String();
        //子串裁剪从0开始
        int start = 0;
        int end;
        //API的indexOf函数,返回值给end
        //如果,end不是-1,则说明后面还可能存在空格字符
        //否则,说明此次start到字符末尾已经没有空格字符
        while((end=str.indexOf(" ", start))!=-1){
            //API的substring函数,对返回值进行处理
            result = result + str.substring(start, end) + "%20";
            //start之前的部分已经处理完毕,下次处理从end+1开始索引查找空格字符
            start = end+1;
        }
        //考虑边界条件:需要加上最后一次没有找到空格字符剩余的子串
        return result + str.substring(start);
    }
}

在源字符串长度为n,替换字符串长度为m的情况下:
最坏空间复杂度为O(n*m)
如果indexOf()函数的复杂度总和为O(n),并且substring函数的复杂度为O(1)则:
最坏时间复杂度为O(n)
(以上如有错误,还望大神指教)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值