算法日记(2025/11/7)
125. 验证回文串
核心代码:
▼text复制代码//顺序读取并创建新字符串1 StringBuilder sb1 = new StringBuilder(cleaned.length()); for(int i = 0; i < cleaned.length(); i++){ sb1.append(cleaned.charAt(i)); } //逆序读取并创建新字符串2 StringBuilder sb2 = new StringBuilder(cleaned.length()); for(int i = cleaned.length() - 1; i >= 0; i--){ sb2.append(cleaned.charAt(i)); } //比较两个字符串(这里有问题) // ✅ //if(sb1.toString().equals(sb2.toString())) return true; // ❌️ if(sb1.equals(sb2) return true;
调试结果:
sb的结果:
▼text复制代码s:"A man, a plan, a canal: Panama" cleaned:"amanaplanacanalpanama" sb1:amanaplanacanalpanama sb2:amanaplanacanalpanamaequals()方法的结果:
▼text复制代码Output: false
为什么 sb1 和 sb2 内容相同返回 false :
StringBuilder没有重写equals()方法,它继承的是Object类的equals(),即比较的是对象引用是否相同。- 即使
sb1和sb2内容完全一样,sb1.equals(sb2)也会返回false,因为它们是两个不同的对象。
为什么使用了 toString() 结果不同了呢:
sb1.toString()返回一个String对象。String的equals()方法被重写为:逐字符比较内容是否相同。- 所以
"abc".equals("abc")→true(即使它们是不同对象)。
面试鸭:Java 中 hashCode 和 equals 方法是什么?它们与 == 操作符有什么区别? - Java 基础面试题 - 面试鸭 - 程序员求职面试刷题神器
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
Day 29✅ 今天做了:Redis消息队列⏰ 明天计划:继续学消息队列
2
Day 17🧭行动:学习了Python最后一个知识点:异常处理🤓体会:Python 程序一旦发生异常,如果没有捕获处理,程序就会直接崩溃终止。使用"try-except"捕获异常,可以预先写好异常处理方案:比如打印友好提示、记录日志、释放资源,保证程序不会直接退出,还能继续运行。🧑💻代码:try:print("================================")# pri
2
Day1今天学习了java中if的使用
2
day 61今天来学校上课了,和教授谈了,可以接下RA工作,不过一周只能charge 10h, 工资很少,不过一个月600刀也勉强比没有好。今天的工作还没做完,最近在做知识库构造,Ui/UX上周就设计完,现在在做底座的建设今天也让Claude直接帮我把Neetcode150 题目+解题思路+代码给我整理了,我发现我真的只有找碎片化时间才能做题,我还不如先背先回忆(之前都做过)祝祖国母亲节日快乐,也
2
Day 1✅ 今天做了:⏰ 明天计划:📚 今日感悟:
0
