最长回文子字符串

问题描述 投票:0回答:1

我一直在解决一些问题,为期中考试做准备,但我无法掌握导致这一错误的原因。该问题指出:>

“最长回文子串问题是找到一个最大长度的连续子串的问题给定的字符串,也是回文。编写一个给定字符串s的Java方法longestPalindrome,它返回最长回文子字符串。例如,“香蕉”的最长回文子串是“香蕉”。最长回文子串是不保证唯一;例如,在字符串“ abracadabra”中,没有回文子字符串长度大于3,但有两个回文长度为3的回文子串,即“ aca”和“ ada”。因此,您的方法应返回最大长度的第一个子字符串。在这种情况下,为“ aca”。“

所以我将这个问题分为2种方法(不包括main方法),这是我的代码:

public static String pali(String s){  
    int i = 0;
    int j = s.length()-1;
    String result = "";
    while (i<s.length()/2)
    {
        if (s.charAt(i) == s.charAt(j))
            if (palicheck(s.substring(i,j+1)) == true)
                break;
            i++;
            j--;
    }
    return s.substring(i,j+1);

}
public static boolean palicheck(String s){
    int i = 0;
    int j = s.length()-1;
    boolean flag = true;
    while(i<s.length()/2){
        if (s.charAt(i) == s.charAt(j) && flag == true)
            flag = true;
        else
            flag = false;
        i++;
        j--;
    }

    return flag;
}

好吧,所以我的代码要做的是获取第一个索引和最后一个索引,并检查它们是否相同,如果是,则将检查它们之间是否包含回文,如果不是,则为回文,这是因为'将它们移动1个单位。我的问题是,无论我输入什么,我总是会得到字符串的第一个字符,例如,如果输入“ bananas”,我会得到b。请帮我!抱歉,如果我遗漏了什么,这是我第一次在这里发布。

((我正在使用非常基本的求解方法,因为这是我上大学的第一年,也是我第一次从事编程工作,所以请多多包涵!^ _ ^)。

我知道了,仅更改了这些:

if (palicheck(s.substring(i,j+1)) == true) break; else i++; j--我完全删除了else,同样在Palicheck中我添加了j--因为我也忘记了这一点

我一直在解决一些问题,为期中考试做准备,但我无法掌握导致此错误的原因。问题指出,“最长回文子串问题是...

java palindrome
1个回答
0
投票
import java.util.Scanner;

public class palindromicSubstring {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);


        String str,substring="",longest="";

        int len,i,j,k;
        System.out.println("Enter String");
        str=sc.nextLine();
        len=str.length();
        for(i=0;i<=len;i++) {
            for(j=0,k=i;k<=len;j++) {

            substring=str.substring(j,k);
            if(palindrome(substring))
                longest=substring;
            k++;
        }
        }
        System.out.println(longest);


    }
    static boolean palindrome(String str)
    {
        int len=str.length();
        int i;
        String temp="";
        for(i=len-1;i>=0;i--) {
            temp=(temp+str.charAt(i));
        }
        if(temp.equals(str)) 
            return true;
        else return false;



    }

}
© www.soinside.com 2019 - 2024. All rights reserved.