[2021校招必看之Java版《剑指offer》-54] 替换空格

文章目录

  • 1、题目描述
  • 2、解题思路
    • 2.1 新建字符串
    • 2.2 扩展字符串
  • 3、解题代码
    • 3.1 新建字符串
    • 3.2 拓展字符串
  • 4、解题心得

1、题目描述

  【JZ02】请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
  知识点:字符串。
  难度:☆☆

2、解题思路

2.1 新建字符串

  新建一个字符串 newStr,遍历输入字符串 oldStr 的每一个字符,遇到空格则 append 字符串 %20 ,否则直接 append 原字符串的字符。

2.2 扩展字符串

  新建字符串的问题在于多创建了一个空间为 N 的字符串。

  另外一个解决思路就是在原有的字符串上进行拓展。

  拓展分为从前向后和从后向前,从前向后遍历的话,每遇到一个空格,都得把后面的字符往后挪,额外操作太多。

  从后往前,先计算需要多少空间,然后从后往前移

你可能感兴趣的:(剑指offer(Java语言),java,数据结构,字符串,剑指offer)