【算法08天:Day8】第四章字符串 LeetCode 剑指Offer 替换空格(05)

67 阅读1分钟

题目三:

image.png

解法一:(库函数)

image.png

image.png

当然库函数不是我们重点关注的。

解法二:(原地替换)

解题思路:

1. 将字符串转换为数组,然后统计其中的空格数量
2. 根据空格数量和原有字符串有效字符长度,计算出刚好存放替换后的字符长度的数组
3. 创建两个指针,一个指向数组末尾,一个指向字符串有效位的末尾,实现原地修改

值得注意的是:数组遍历,一定要从后往前遍历,避免从前往后,造成字符被修改,导致错误!

image.png

image.png

解法三:(循环替换)

image.png

总结: 其实很多数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。

1.  不用申请新数组。
2.  从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动。