我的回文有什么问题?

时间:2014-10-07 16:32:06

标签: java

问题:

  1. 开发递归算法以确定是否在较长的单词或短语中隐藏了回文。回文是从左到右阅读时具有相同字母序列的单词或短语,当从右到左阅读时,忽略空格(例如,Some like cake, but I prefer pie包含回文I prefer pi)。 / LI>

    以下是我的代码:

    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));
        }
    }
    

    我不断得到&#34;我&#34;

    的输出

    我不知道出了什么问题。

1 个答案:

答案 0 :(得分:0)

FatalError评论sLine.replaceAll()会返回新的String。您需要重新分配sLine或将replaceAll()的结果传递给方法。

你会发现一个新的错误需要修复,但它只是一个一个一个!