方法一:遍历添加
在 Python 和 Java 等语言中,字符串都被设计成「不可变」的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现。
算法流程:
- 初始化一个
list
(Python) 或StringBuilder
(Java) ,记为res
; - 遍历列表
path
中的每个字符c
:- 当
c
为空格时:向res
后添加空格 " " ; - 当
c
不为空格时:向res
后添加字符c
;
- 当
- 将列表
res
转化为字符串并返回。
下图中的
s
对应本题的path
。
<,,,,>
代码:
Python
class Solution:
def pathEncryption(self, path: str) -> str:
res = []
for c in path:
if c == '.': res.append(' ')
else: res.append(c)
return "".join(res)
Java
class Solution {
public String pathEncryption(String path) {
StringBuilder res = new StringBuilder();
for(Character c : path.toCharArray())
{
if(c == '.') res.append(' ');
else res.append(c);
}
return res.toString();
}
}
复杂度分析:
- 时间复杂度 $O(N)$ : 遍历使用 $O(N)$ ,每轮添加(修改)字符操作使用 $O(1)$ ;
- 空间复杂度 $O(N)$ : Python 新建的 list 和 Java 新建的 StringBuilder 都使用了线性大小的额外空间。