Java 查找给定字符串中的回文子字符串

Java 查找给定字符串中的回文子字符串,java,Java,输入为:levelmm 输出是:给定的字符串是回文的,因为给定的字符串包含level是回文保留字符,如mm被忽略 包装实例 导入java.util.Scanner 公共类exp2{ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("enter the string"); Scanner scan=new Scanner(System

输入为:levelmm 输出是:给定的字符串是回文的,因为给定的字符串包含level是回文保留字符,如mm被忽略

包装实例

导入java.util.Scanner

公共类exp2{

public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("enter the string");
    Scanner scan=new Scanner(System.in);
    String s=scan.nextLine();
    String t="";
    String s1=s.substring(0, s.length()-1);

    for(int i=s1.length()-1;i>=0;i--)
{
    t=t+s.charAt(i);
}

    if(t.equalsIgnoreCase(s1))
    {
        int count=t.length();
        System.out.println("is palindrome"+(count-1));
    }else
    {
        System.out.println("not a palindrome");
    }
}
}
但是它不能完全工作。

首先,行
字符串s1=s.substring(0,s.length()-1)从单词中删除一个字符,这看起来不像是应该发生的事情

看起来,您希望创建输入的每个可能的子字符串,并查看它是否是回文。为了确定某个内容是否是回文,我建议:

private static boolean isPalindrome(String word) {
    String reverseWord = "";
    for (int i = word.length() - 1; i > -1; i--) {
        reverseWord += word.toCharArray()[i];
    }
    return reverseWord.equalsIgnoreCase(word);
}
获取每个子字符串更为困难,但可以这样做:

private static String[] allSubstrings(String word) {
    int amount = 0;
    for (int i = 0; i < word.length() + 1; i++) {
        amount += i;
    }
    String[] res = new String[amount];
    int index = 0;
    for (int i = 0; i < word.length(); i++) {
        for (int j = i + 1; j < word.length() + 1; j++) {
            res[index] = word.substring(i, j);
            index++;
        }
    }

    return res;
}
public static void main(String[] args) {
    System.out.println("enter the string");

    Scanner scan = new Scanner(System.in);
    String s = scan.nextLine();

    boolean isPal = false;
    for (String word : allSubstrings(s)) {
        if (word.length() > 1 && isPalindrome(word)) {
            isPal = true;
        }
    }
    if (isPal) {
        System.out.println("Is palindrome");
    } else {
        System.out.println("Is not palindrome");
    }
}

我希望这能回答您的问题,并祝您编码愉快。

您想做什么?您有什么问题?欢迎使用堆栈溢出!请阅读“如何创建一个应用程序”。然后使用链接改进您的问题(不要通过评论添加更多信息)。否则我们无法回答您的问题并帮助您。问题不清楚。更好地解释它。“它完全工作了”那么,如果代码工作了,你为什么在这里?如果它不起作用,试着调试代码。例如,打印
t
s1
的值--虽然我很好奇你为什么要删除最后一个字符。提示:请阅读的javadoc。