替换空格

请实现一个函数,将一个字符串中的空格替换成“%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)
(以上如有错误,还望大神指教)

替换空格---剑指Offer相关推荐

  1. 《剑指offer》题目说明

    剑指offer推荐刷题地址: Leetcode: https://leetcode-cn.com/problemset/lcof (官方授权) 牛客网:https://www.nowcoder.com ...

  2. C#LeetCode刷题-剑指Offer

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-剑指Offer | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode剑指Offer ...

  3. 力扣OJ 剑指 Offer(1-30)

    目录 剑指 Offer 03. 数组中重复的数字 剑指 Offer 04. 二维数组中的查找 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 剑指 Offer 07. ...

  4. 《剑指offer》75题 C++详细题解

    目录 简单: 剑指 Offer 03. 数组中重复的数字 map: unordered_map: 原地交换 剑指 Offer 05. 替换空格 剑指 Offer 06. 从尾到头打印链表 出栈入栈 双 ...

  5. 剑指 Offer(第 2 版) 出现频率从高到低 已经完结100题

    upd:12.10,陆陆续续刷了3周刷完了.比较简单 下面开始刷公司题库. 目录 直接A的题目: 剑指 Offer 03. 数组中重复的数字 剑指 Offer 09. 用两个栈实现队列 剑指 Offe ...

  6. 剑指offer刷题记录 python3 Java

    剑指offer刷题记录 python3 Java 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 03. 数组中重复的数字 [★]剑指 Of ...

  7. 剑指 offer 全记录

    文章目录 排序 1.快排(时间复杂度O(nlogn),空间复杂度O(1)),下面的实现是一种原地排序的实现. 2.堆排 3.归并(时间复杂度一直是O(NlogN),空间复杂度O(n)) 4.插入 关于 ...

  8. 《LeetCode力扣练习》剑指 Offer 05. 替换空格 Java

    <LeetCode力扣练习>剑指 Offer 05. 替换空格 Java 一.资源 题目: 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输 ...

  9. 【剑指Offer面试题】 九度OJ1510:替换空格

    c/c++ 中的字符串以"\0"作为结尾符.这样每一个字符串都有一个额外字符的开销. 以下代码将造成内存越界. char str[10]; strcpy(str, "01 ...

最新文章

  1. 六年级计算机word处理,六年级上信息技术教案Word大变身用Word制作网页河大版
  2. 从原理到代码,轻松深入逻辑回归模型!
  3. Spring Cloud 万字总结!
  4. thinkphp5.1+ 使用 Redis 缓存
  5. iOS - OC PList 数据存储
  6. Linux学习之如何在物理机上安装Linux发行版
  7. 总被审稿人提起的多重假设检验校正是什么?
  8. 谷歌chrome浏览器桌面提醒 webkitNotifications
  9. HDU2571 命运【动态规划DP】
  10. 「做点事」科技公司成立了!
  11. 虚拟机更改ip失败及没有虚拟网卡
  12. 《大数据之路-阿里巴巴大数据实践》第三章 数据同步
  13. 种花小游戏 随机化搜索
  14. excel提取数字的方法
  15. ping 快ping
  16. 某网友嵌入式求职经验总结
  17. Keras(三十四)Transformer模型代码实现
  18. Java最方便的安装和配置步骤
  19. 新年快乐吖大蕉的朋友们
  20. QApplication和QCoreApplication的区别

热门文章

  1. 6.MySQL图形化工具的使用
  2. lucene 索引优化
  3. SQL基础整理(事务)
  4. Python---常见问题
  5. Linux学习参考书
  6. 按文件类型获取其图标
  7. 用gnuplot画出c产生数据的波形图
  8. (转载)不断进阶:从“学渣”到P10,一位阿里工程师的逆袭故事
  9. C++ KMP算法完整实现
  10. [云炬创业基础笔记]第十一章创业计划书测试2