力扣算法题LCR 122.路径加密

文章对比了两种Java实现路径加密的方法,题解一使用普通字符串连接,效率较低;题解二利用StringBuilder,具有高效性和内存优势。推荐使用StringBuilder实现,尤其在处理大规模输入时效果显著。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LCR 122 路径加密 - 优化题解对比

问题描述

给定一个路径字符串 path,其中使用 “.” 作为分隔符。现在需要对路径进行加密,加密方法是将路径中的分隔符替换为空格 " ",请返回加密后的字符串。

示例

  • 输入:path = “a.aef.qerf.bb”

  • 输出:“a aef qerf bb”

限制

  • 0 <= path.length <= 10000

题解对比

题解一

class Solution {
    public String pathEncryption(String path) {
        String newPath = "";
        for (int i = 0; i < path.length(); i++){
            char ch = path.charAt(i);
            if (ch == '.'){
                newPath += " ";
            } else {
                newPath += ch;
            }
        }
        return newPath;
    }
}
  • 执行用时: 5ms
  • 击败比例: 3.62% 使用 Java 的用户

题解二

class Solution {
    public String pathEncryption(String path) {
        StringBuilder newPath = new StringBuilder();
        for (int i = 0; i < path.length(); i++){
            char ch = path.charAt(i);
            if (ch == '.'){
                newPath.append(" ");
            } else {
                newPath.append(ch);
            }
        }
        return newPath.toString();
    }
}
  • 执行用时: 0ms
  • 击败比例: 100.00% 使用 Java 的用户

优化对比

两个题解的核心思想是一致的,都是遍历输入路径字符串,遇到 “.” 就替换成空格,其余字符保持不变。然而,题解二采用了 StringBuilder 来构建新的路径字符串,相较于题解一,它的执行效率更高。

  • 优势一:StringBuilder 的高效性
    在 Java 中,字符串是不可变的,每次执行字符串连接操作都会生成一个新的字符串对象。这导致了题解一中在每次循环中都创建了新的字符串,而题解二使用 StringBuilder 则避免了这种开销。StringBuilder 是可变的,可以高效地进行字符串拼接,不会每次都生成新的字符串对象,因此性能更好。

  • 优势二:内存占用
    由于字符串的不可变性,每次连接字符串都会产生新的字符串对象,而这些对象需要在内存中占用额外的空间。使用 StringBuilder 的方式可以减少内存占用,因为它只在需要时扩展其内部缓冲区,而不是创建新的对象。

总结

虽然两个题解的逻辑相同,但由于题解二采用了 StringBuilder,在性能和内存占用方面都更为优越。因此,推荐使用题解二的实现方式,特别是在处理大规模输入时,其优势将更为明显。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值