Java 检查最长回文的程序无效

Java 检查最长回文的程序无效,java,Java,这段代码有什么问题。 不起作用..返回整个字符串。。。 我试图检查最长的子字符串,它是回文 我使用蛮力方法检查每个子字符串是否有回文。 为什么这不起作用 public class LongestPalindrome { static String s = "yogaranjnarsap"; static String test = ""; static String result =""; static int resultLen = 0; static

这段代码有什么问题。 不起作用..返回整个字符串。。。 我试图检查最长的子字符串,它是回文

我使用蛮力方法检查每个子字符串是否有回文。 为什么这不起作用

public class LongestPalindrome {

    static String s = "yogaranjnarsap";
    static String test = "";
    static String result ="";
    static int resultLen = 0;
    static String temp = "";

    static void checkPalindrome(String str)
    {
        StringBuilder sb = new StringBuilder(str);
        StringBuilder sb1 = new StringBuilder();

        sb1 = sb.reverse();
        if(sb1.toString().equals(sb.toString()))
        {
            //System.out.println(sb1.equals(sb));

            if(sb.length() > result.length())
            {
                result = sb.toString();
                resultLen = sb.length();
            }
        }
    }



    public static void main(String[] args) {

        for(int i=0;i<s.length();i++)
        {
            temp = "" + s.charAt(i);

            for(int j=i+1;j<s.length();j++)
            {
                temp = temp + s.charAt(j);
                checkPalindrome(temp);
                //temp = temp + s.charAt(i);

            }
            temp ="";
        }

        if(result.length() > 1)
        {
        System.out.println(result);
        System.out.println("length" + resultLen);
        }

        else
            System.out.println("no palindrome found");
    }

}
公共类最长回文{
静态字符串s=“yogaranjnarsap”;
静态字符串测试=”;
静态字符串结果=”;
静态int resultLen=0;
静态字符串temp=“”;
静态无效检查回文(字符串str)
{
StringBuilder sb=新的StringBuilder(str);
StringBuilder sb1=新的StringBuilder();
sb1=sb.reverse();
如果(sb1.toString())等于(sb.toString())
{
//系统输出println(sb1等于(sb));
如果(sb.length()>result.length())
{
结果=sb.toString();
resultLen=sb.length();
}
}
}
公共静态void main(字符串[]args){
for(int i=0;i
sb.reverse()
反转
sb
并返回此对象

因此
sb1=sb.reverse();
将反转
sb
,并将
sb1
分配给
sb

您要执行以下操作:

StringBuilder original = new StringBuilder(str);
StringBuilder reverse = new StringBuilder(str).reverse();
sb.reverse()
反转
sb
并返回此对象

因此
sb1=sb.reverse();
将反转
sb
,并将
sb1
分配给
sb

您要执行以下操作:

StringBuilder original = new StringBuilder(str);
StringBuilder reverse = new StringBuilder(str).reverse();

这一行的问题在于:

sb1 = sb.reverse();
reverse()
方法反转
sb
本身,因此
sb
sb1
都引用相同的
StringBuilder
对象,该对象包含
str
的反转。请尝试此操作,而不要声明
sb
sb1

String revStr = new StringBuilder(str).reverse().toString();

然后,只需将
sb
sb.toString()
的所有实例替换为
str
sb1.toString()
替换为
revStr
,这行代码有问题:

sb1 = sb.reverse();
reverse()
方法反转
sb
本身,因此
sb
sb1
都引用相同的
StringBuilder
对象,该对象包含
str
的反转。请尝试此操作,而不要声明
sb
sb1

String revStr = new StringBuilder(str).reverse().toString();

然后用
str
sb.toString()替换
sb
sb1.toString()的所有实例
with
revStr

这是学习如何使用调试器的绝佳机会。查阅如何使用您正在使用的IDE进行调试,并逐行跟踪代码。这样做对您来说至关重要,而不是让别人把答案推给您。@Kon谢谢您的老板。。我需要这个建议!!这是一个很好的机会学习如何使用调试器。查看如何使用您正在使用的IDE进行调试,并逐行跟踪代码。这样做对您来说至关重要,而不是让别人把答案推给您。@Kon谢谢老板。。我需要这个建议!!