java回文不是wokring
import java.util.*;
public class FindingPalindrome {
private String inputString;
private Stack<Character> stack = new Stack<Character>();
public FindingPalindrome(String str)
{
inputString = str;
fillStack();
}
public void fillStack()
{
for(int i = 0; i < inputString.length(); i++)
{
stack.push(inputString.charAt(i));
}
}
public String reverseString()
{
String result = new String();
while(!stack.isEmpty())
{
result = result.concat(Character.toString(stack.pop()));
}
return result;
}
public boolean isPalindrome()
{
if(inputString.equalsIgnoreCase(reverseString()))
return true;
else return false;
}
}
public class TestPalindrome {
public static void main(String args[])
{
String inputString ="Straw? No, too stupid a fad. I put soot on warts";
String inputString1 = inputString.toLowerCase().replaceAll("[^a-z]","");
FindingPalindrome p = new FindingPalindrome(inputString );
if(p.isPalindrome())System.out.println("Is palindrome!");
else System.out.println("Is not palindrome!");
}
}
上面是按堆栈测试回文的代码。一切正常,但回文输出不正确
# 1 楼答案
如果您关心的只是回文检查,那么这里有一个简洁的实现:
# 2 楼答案
你没有把问题说清楚。您是否需要使用堆栈来执行此操作?除此之外,它非常简单(我不知道如何阅读您当前的算法):
您的输入将是:
我意识到这个答案对你没有帮助,如果你想保持你目前的算法,但我想我应该提供这样的东西无论如何
需要特别注意的是:StringBuffer类有^{} ,它反转字符序列。在这种情况下,您可以使用此选项代替上述选项:
# 3 楼答案
您正在用
inputString
构造FindingPalindrome
对象,而您应该用inputString1
来构造它: