[LCR 122] 路径加密 (Path Encryption)
难度:简单 | 标签:字符串、模拟
题目描述
假定一段路径记作字符串 path,其中以 . 作为分隔符。现需将路径加密,加密方法为将 path 中的分隔符替换为空格 " ",请返回加密后的字符串。
解法一:新建字符串 (Auxiliary String)
创建一个新的空字符串 res,遍历原字符串,如果是 . 就追加空格,否则追加原字符。
- 时间复杂度:
- 空间复杂度: (因为创建了额外的存储空间)
解法二:原地修改 (In-Place Modification) —— 推荐 ✅
利用 C++ string 可变的特性,直接在原字符串上进行遍历和修改,省去额外的内存开销。 遍历时使用引用 (char &c),直接操作内存地址。
cpp
class Solution {
public:
string pathEncryption(string path) {
// 使用引用遍历,直接修改 path 中的字符
for (char &c : path) {
if (c == '.') {
c = ' ';
}
}
return path;
}
};易错点分析
- 引用符号 &: for (char &c : path) 中的 & 必不可少。如果没有 &,c 只是原字符的拷贝,修改它不会影响 path。
- 字符 vs 字符串: 注意是替换为字符空格 ' ' (单引号),而不是字符串空格 " " (双引号)。
- 语言特性: 此解法利用了 C++ string 是可变 (Mutable) 的特性。如果是 Java 或 Python,String 是不可变的,通常需要转化为数组或 StringBuilder 处理,空间复杂度会退化为 。
