java - 我的回文有什么问题?

标签 java

问题:

  • 开发一种递归算法来确定较长的单词或短语中是否隐藏着回文。回文是一个单词或短语,从左到右阅读和从右到左阅读时具有相同的字母序列,忽略空格(例如,Some like cake,但我更喜欢ie包含回文我更喜欢 pi)。
  • 下面是我的代码:

    public class e125 {
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            int i = 0;
            String sLine = "Some like cake, but I prefer pie";
            sLine.replaceAll("\\s+", "");
            System.out.println(PlainRet(sLine, i));
        }
    
        public static String PlainRet(String sLine, int i) {
            int nNum;
            char c = 0;
            String sPlain = "";
            if (i >= sLine.length()) {
                return "No Plaindrome";
            }
            c = sLine.charAt(i);
            nNum = Isgood(sLine, c, i);
            if (nNum != 0) {
                for (; i < nNum; i++) {
                    sPlain += sLine.charAt(i);
                }
                return sPlain;
            }
            return PlainRet(sLine, i + 1);
        }
    
        public static int Isgood(String sLine, char c, int i) {
            for (int j = i + 1; j < sLine.length(); j++) {
                if (Character.toUpperCase(sLine.charAt(j)) == Character.toUpperCase(c)) {
                    if (Isplain(sLine, i, j)) {
                        return j;
                    }
                }
            }
            return 0;
        }
    
        public static boolean Isplain(String sLine, int i, int j) {
            if (Character.toUpperCase(sLine.charAt(j)) != Character.toUpperCase(sLine.charAt(i))) {
                return false;
            }
            else if (i == j || j == i + 1) {
                return true;
            }
            return (Isplain(sLine, i + 1, j - 1));
        }
    }
    

    我不断得到“I”的输出

    我不知道出了什么问题。

    最佳答案

    喜欢FatalError注释的 sLine.replaceAll() 返回一个新的 String。您需要重新分配 sLine 或将 replaceAll() 的结果传递到方法中。

    执行此操作后,您会发现一个需要修复的新错误,但这只是一个差值!

    关于java - 我的回文有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26240852/

    相关文章:

    Java 数据库 : can i remove tables created by derby

    java - 包含 java 调用的 Ant 任务,接收将像系统属性参数一样设置的参数

    Java 做 while 猜谜游戏

    java - 从 Blobstore 反序列化大型 Blob

    javascript - Java 属性文件到 JSON

    java - Spring重载构造函数注入(inject)

    java - 是否有任何用于二进制文件解析的 Java 框架?

    java - 在布局底部创建一个三角形

    java - 了解 Java 中序列化的重要性

    java - 以 0.5 为增量检查 1-10 的正则表达式?