Java 使所有的组合从回文

Java 使所有的组合从回文,java,recursion,substring,palindrome,Java,Recursion,Substring,Palindrome,我的任务有问题。我必须制作一个程序,输入是回文/不是回文,输出是返回字符串的子字符串,该字符串可以是递归的回文。例如: “marah”,输出应为(“m”、“a”、“r”、“a”、“h”)、(“m”、“ara”、“h”)。我不知道如何在递归中实现这一点。请任何能帮助我的人,我非常需要那个代码。我是用java开发的。谢谢,我希望会有人来帮忙:D public static String palindrome(String s) { String s, sub; int i, c, l

我的任务有问题。我必须制作一个程序,输入是回文/不是回文,输出是返回字符串的子字符串,该字符串可以是递归的回文。例如:

“marah”,输出应为(“m”、“a”、“r”、“a”、“h”)、(“m”、“ara”、“h”)。我不知道如何在递归中实现这一点。请任何能帮助我的人,我非常需要那个代码。我是用java开发的。谢谢,我希望会有人来帮忙:D

public static String palindrome(String s) {
    String s, sub;
    int i, c, length;
    Scanner in = new Scanner(System.in);
    System.out.println("Enter a string to print it's all substrings");
    s = in.nextLine();
    length = string.length();
    System.out.println("Substrings of \"" + string + "\" are :-");
    for (c = 0; c < length; c++) {
      for (i = 1; i <= length - c; i++) {
        sub = string.substring(c, c + i);
        System.out.println(sub);
      }
    }
  }
公共静态字符串回文(字符串s){
字符串s,sub;
int i,c,长度;
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入一个字符串以打印它的所有子字符串”);
s=in.nextLine();
length=string.length();
System.out.println(“字符串+字符串+的子字符串为:-”);
对于(c=0;c公共静态字符串最长回文(字符串s){
如果(s.isEmpty()){
返回null;
}
如果(s.长度()==1){
返回s;
}
字符串最长=s.子字符串(0,1);
对于(int i=0;ilongest.length()){
最长=tmp;
}
//获取以i为中心的最长回文,i+1
tmp=助手(s,i,i+1);
if(tmp.length()>longest.length()){
最长=tmp;
}
}
返回时间最长;
}
//给定一个中心,一个字母或两个字母,
//查找最长回文
公共静态字符串帮助器(字符串s、整型开始、整型结束){

虽然(begin>=0&&end这称为回文分区,您可以在此处找到它

请编辑您的问题以添加代码-无法在注释中阅读。对不起,我是新来的,无法正确地将代码粘贴到注释中代码只能打印子字符串,并且不检查回文。我如何进行此操作?也是递归的?这是可能是
public static String longestPalindrome(String s) {
    if (s.isEmpty()) {
        return null;
    }

    if (s.length() == 1) {
        return s;
    }

    String longest = s.substring(0, 1);
    for (int i = 0; i < s.length(); i++) {
        // get longest palindrome with center of i
        String tmp = helper(s, i, i);
        if (tmp.length() > longest.length()) {
            longest = tmp;
        }

        // get longest palindrome with center of i, i+1
        tmp = helper(s, i, i + 1);
        if (tmp.length() > longest.length()) {
            longest = tmp;
        }
    }

    return longest;
}

// Given a center, either one letter or two letter, 
// Find longest palindrome
public static String helper(String s, int begin, int end) {
    while (begin >= 0 && end <= s.length() - 1 && s.charAt(begin) == s.charAt(end)) {
        begin--;
        end++;
    }
    return s.substring(begin + 1, end);
}