日期:2014-05-20  浏览次数:20705 次

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

        /**
 * 删除一个字符串中的逗号
 * 
 * @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));
}

------解决方案--------------------
写一个方法,返回字符串:

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

}

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

------解决方案--------------------
引用:
Java code?1234static String removeComma(String s){    if(s.indexOf(",") == -1) return s;    return removeComma(s.replaceFirst(",",""));}
+