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;isb.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()的所有实例
withrevStr
这是学习如何使用调试器的绝佳机会。查阅如何使用您正在使用的IDE进行调试,并逐行跟踪代码。这样做对您来说至关重要,而不是让别人把答案推给您。@Kon谢谢您的老板。。我需要这个建议!!这是一个很好的机会学习如何使用调试器。查看如何使用您正在使用的IDE进行调试,并逐行跟踪代码。这样做对您来说至关重要,而不是让别人把答案推给您。@Kon谢谢老板。。我需要这个建议!!