Java回文检查器 [英] Java Palindrome checker

查看:94
本文介绍了Java回文检查器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的回文检查器出现问题,因为它无法正常工作.它必须能够测试以下4件事:

I have a issue with my palindrome checker as it is not working properly. It must be able to test these 4 things:

    TestPalindrome("Madam, I'm Adam", true);
    TestPalindrome("addbda", false );
    TestPalindrome("", false);
    TestPalindrome("Dammit, I'm mad", true);

这是我的回文代码:

public static boolean IsPalindrome( String inputString )
{
    String reverse = "";
    for(int i = inputString.replaceAll("[^a-zA-Z ]", "").length() -1; i>=0; i--){
        reverse = reverse + inputString.replaceAll("[^a-zA-Z ]", "").charAt(i);
    }
    if(inputString.replaceAll("[^a-zA-Z ]", "").equalsIgnoreCase(reverse.toString()) && !inputString.replaceAll("[^a-zA-Z ]", "").isEmpty()){
        return true;
    }

    if(!inputString.replaceAll("[^a-zA-Z ]", "").equalsIgnoreCase(reverse.toString()) && !inputString.replaceAll("[^a-zA-Z ]", "").isEmpty()){
        return false;
    }

    if(inputString.replaceAll("[^a-zA-Z ]", "").isEmpty()){
        return false;
    }

    else return true;
         }
}

这是我的输出:

TestPalindrome failed: expected true got false
TestPalindrome passed!
TestPalindrome passed!
TestPalindrome failed: expected true got false

任何人都可以帮助我解决此问题,以便我获得列表中的所有通行证.我知道有人问过类似的问题,但我不是在问如何做回文检查程序,而是要如何解决我的特定问题.我使用了其他问题来学习,但是由于某种原因我的那个问题不起作用.

Can anyone help me fix this so I get all passes in the list. I understand similar questions have been asked but I´m not asking how to do a palindrome checker but how to fix my specific one. I used those other questions to learn but for some reason my one doesn't work.

推荐答案

要使这种算法正常工作,您需要考虑清除诸如逗号,半角分号,撇号等正点符号(正在谈论';:'等)

In order to such algorithm to work you need to consider to clean the punctual symbols like comma, semmicolon, aposthrofs etc (am talking about ';:' etc)

Java有一个StringBuilder类,并且有一种反转字符串的方法

Java has a StringBuilder class and in there is a method to reverse strings

因此,如果您清洁字符串以进行检查,将其反转并再次进行比较,则可以看到它是否是回文式...

so if you clean the String to check, reverse it and compare it again itself you can see if it a palindrome or not...

public static void main(String[] args) {
    String word = "Madam, I'm Adam";
    String word2 = "addbda";
    String word3 = "";
    String word4 = "Dammit, I'm mad";
    System.out.println(IsPalindrome(word));
    System.out.println(IsPalindrome(word2));
    System.out.println(IsPalindrome(word3));
    System.out.println(IsPalindrome(word4));
}

private static boolean IsPalindrome(String word) {
    String wordClean = word.replaceAll("[^a-zA-Z  ]", "");
    String reversedWord =  new StringBuilder(wordClean).reverse().toString();
    System.out.println(wordClean);
    System.out.println(reversedWord);
        return reversedWord.equalsIgnoreCase(wordClean)&&!wordClean.isEmpty();
}

这将打印

夫人 疯子 真实

MadamImAdam madAmImadaM true

addbda 亚伯达 错误

addbda adbdda false

假(空支票)

DammitImmad 害羞 是

DammitImmad dammItimmaD true

这篇关于Java回文检查器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆