java - 弦对称程序

标签 java recursion symmetry

嘿,我需要一些帮助来找出我的程序无法运行的原因。问题是使用递归编写一个程序,在删除所有标点符号和空格后计算给定的文本是否是回文。虽然程序到目前为止已编译,但它返回的每个值都为 false。我们只允许更改 isSymmetrical 方法。我可以利用一切可能的帮助来尝试找出如何使这项工作成功。谢谢。

public class StringSymmetry {

public static boolean isSymmetrical(String inputText)
{
    if(inputText.length() == 0 || inputText.length() ==1)
        return true;

    if(inputText.charAt(0) == inputText.charAt(inputText.length()-1))
        return isSymmetrical(inputText.substring(1,inputText.length()-1));

        return false;
}



public static void main(String[] args) {
    String[] sampleData = 
        { "Don't nod",
          "Dogma: I am God",
          "Too bad - I hid a boot",
          "Rats live on no evil star",
          "No trace; not one carton",
          "Was it Eliot's toilet I saw?",
          "Murder for a jar of red rum",
          "May a moody baby doom a yam?",
          "Go hang a salami; I'm a lasagna hog!",
          "Name is Bond, James Bond"
        };

    for (String s : sampleData)
    {
        System.out.println("isSymmetrical (" + s + ") returns " + isSymmetrical(s));
    }


}

}

最佳答案

问题是您没有对大小写、标点符号和空格进行任何检查。

你可以这样做的一种方法是这样的。具体细节取决于您可以在作业中使用的内容,但您可能打算按照这些思路做一些事情。

另外,请注意,如果您将默认区域设置设置为土耳其等不寻常的区域,则 toLowerCase 会出现问题。为了获得适当的稳健性,您需要指定一个区域设置,但这不是您在家庭作业中不必担心的事情。

  public static boolean isSymmetrical(String inputText)
  {
      inputText = inputText.toLowerCase();

      if(inputText.length() == 0 || inputText.length() ==1)
          return true;

      if(!Character.isLetter(inputText.charAt(0)))
        return isSymmetrical(inputText.substring(1,inputText.length()));

      if(!Character.isLetter(inputText.charAt(inputText.length()-1)))
        return isSymmetrical(inputText.substring(0,inputText.length()-1));      

      if(inputText.charAt(0) == inputText.charAt(inputText.length()-1))
          return isSymmetrical(inputText.substring(1,inputText.length()-1));

      return false;
  }

关于java - 弦对称程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16258877/

相关文章:

java - 递归:解决进口迷宫?

c++ - 无法将 const_iterator 绑定(bind)到 const_iterator

python - N 皇后区对称性破坏 Google OR 工具

java - 如何使警报对话框中的复选框左对齐?

java - Ionic 构建失败 : JAVA_HOME is invalid

python - Sierpinski 地毯递归 - Python

Python 交换运算符覆盖

java - Java中的置换群实现

java - 每次滚动/平移/拖动时,相机都会移回到原始位置

java - 将随机值按一定比例均匀分布在二维数组中