上次去科大国创面试,第一道算法题就是递归算法,可怜知识贫瘠,没搞定。
String str = "e,g,h,j,k,k,j,h,";
递归剔除字符串中的逗号;

解决方案 »

  1.   


            /**
     * 删除一个字符串中的逗号
     * 
     * @param data 
     *  源字符串
     * @return 被删除逗号的字符串
     */
    public static String deleteComma(String data) {
    for (int i = 0; i < data.length(); i++) {
    if (data.substring(i, i+1).equals(",")) {
    //找到第一个逗号,该豆号之前的东西肯定没有逗号,之后的字符串执行删除方法,再连接起来返回
    return data.substring(0, i) + deleteComma(data.substring(i + 1));
    }
    }
    return data;
    }
    刚刚写的主方法是这样的
    public static void main(String[] args) {
    String str = "a,b,ccc,e33,3";
    System.out.println(deleteComma(str));
    }
      

  2.   

    写一个方法,返回字符串:public static String rmvStr(String str){

    if(str.length()==1) return ",".equals(str)?"":str;
    String first = str.substring(0, 1);
    first = ",".equals(first)?"":first;
    return first+rmvStr(str.substring(1));

    }
      

  3.   

    static String removeComma(String s){
        if(s.indexOf(",") == -1) return s;
        return removeComma(s.replaceFirst(",",""));
    }
      

  4.   

    干嘛非得用剃归 用split substring不好么? 反正个人很烦那个递归
      

  5.   

    兄弟你的方法 不健全吧
     public String Delete(String str){
         for (int i = 0; i < str.length(); i++) {
    if(str.substring(i, i+1).equals(",")){
    str=str.substring(0, i)+str.substring(i+1);
    i--;//这里为什么i--想想?
    }
    }
         return str;
        }
        public static void main(String[] args) {
    Aaa a=new Aaa();
    System.out.println(a.Delete(",,a,,fg,hg,b,c,,,d,,,,,"));
    }输出:afghgbcd
      

  6.   


    3楼不比2楼好吧,逐个字符串递归,那得多递归不少次,效率就下来了。
    看来我还是来晚了,我支持2楼,来个char[]版的:
        public static char[] replaceComma(char[] oldCs) {
            for (int i = 0; i < oldCs.length; i++) {
                if (oldCs[i] == ',') {
                    char[] newCs = new char[oldCs.length - 1];
                    System.arraycopy(oldCs, 0, newCs, 0, i);
                    System.arraycopy(oldCs, i + 1, newCs, i, oldCs.length - i - 1);
                    return replaceComma(newCs);
                }
            }
            return oldCs;
        }
        public static void main(String[] args) {
            String str = "a,b,ccc,e33,3,";
            System.out.println(replaceComma(str.toCharArray()));