首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查给定的单词是否为回文

检查给定的单词是否为回文
EN

Stack Overflow用户
提问于 2021-05-02 18:25:39
回答 3查看 61关注 0票数 0

我正在尝试编写一个方法来检查给定的单词是否为回文,但到目前为止它还不起作用。我怀疑错误存在于if-语句中,并且您不使用==而是equals来比较诸如字符串之类的对象,对吗?然而,Java不允许我写:if (firstHalf.charAt(i).equals(secondHalf.charAt(j))),那么我能做些什么来使它工作呢?代码中还有其他错误吗?

代码语言:javascript
运行
复制
public static boolean isPalindrome(String string) {
    String firstHalf = string.substring(0, string.length() / 2);
    String secondHalf = string.substring(string.length() / 2, string.length());
    for (int i = 0; i <= firstHalf.length(); i++) {
        for (int j = secondHalf.length(); j <= 0; j--) {
            if (firstHalf.charAt(i) == secondHalf.charAt(j)) {
                return true;
            }
        }
    }
    return false;
}
EN

回答 3

Stack Overflow用户

发布于 2021-05-02 18:33:44

为什么不这样做呢?

代码语言:javascript
运行
复制
public static boolean isPalindrome(String string){
  StringBuilder sb = new StringBuilder(string);  
  sb.reverse();  
  return sb.toString().equals(string);
}  
票数 2
EN

Stack Overflow用户

发布于 2021-05-02 22:02:37

你的性格测试是倒退的。所有的比较都必须相等,字符串才能成为回文。

此外,拆分String也是不必要的。您可以在逻辑上将String拆分为两个索引。

试试这段代码。

代码语言:javascript
运行
复制
    public static boolean isPalindrome(String string) {
        int frontIndex = 0;
        int backIndex = string.length() - 1;
        while (frontIndex < backIndex) {
            if (string.charAt(frontIndex++) != string.charAt(backIndex--)) {
                return false;
            }
        }
        return true;
    }
票数 1
EN

Stack Overflow用户

发布于 2021-05-02 18:30:00

您可以将每个字符作为字符串,如String s1 = "" + c1;,然后与.equals(s1, s2)进行比较

或者,您可以使用Character类,它是原语character的包装器。这也将使您能够使用c1.equals(c2)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67355263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档