字符串回文判断程序异常求助:输出结果始终为false
回文判断代码问题排查与修复
你的代码存在两个核心问题导致始终输出false(甚至无法正常编译):
- 字符串比较方式错误:Java中
==运算符比较的是两个字符串对象的内存引用地址,而非实际内容。即使反转后的字符串和原字符串内容完全一致,它们也是不同的对象,因此emtStr==trimedStr永远会返回false。必须使用equals()方法来比较字符串的实际内容。 - 语法错误:else分支的
return语句缺少返回值,这会导致代码编译失败,程序根本无法运行。
修复后的代码(保留原反转逻辑)
class Solution { public boolean isPalindrome(String s) { String trimmedStr = s.replace(" ", "").replace(",", "").replace(":", "").toLowerCase(); String emtStr = ""; for (int i = trimmedStr.length() - 1; i >= 0; i--) { String charStr = String.valueOf(trimmedStr.charAt(i)); emtStr += charStr; } // 用equals比较内容,直接返回结果简化代码 return emtStr.equals(trimmedStr); } }
更高效的优化版本
循环拼接字符串会产生多个中间String对象,推荐使用StringBuilder来提升反转效率:
class Solution { public boolean isPalindrome(String s) { String trimmedStr = s.replace(" ", "").replace(",", "").replace(":", "").toLowerCase(); // 利用StringBuilder的reverse方法直接反转 String reversedStr = new StringBuilder(trimmedStr).reverse().toString(); return reversedStr.equals(trimmedStr); } }
内容的提问来源于stack exchange,提问作者Nirmal Shinde
相关产品推荐
相关产品推荐

