黑马程序员技术交流社区

标题: 分析别人写的123456789=110的代码,让大家领悟递归遍历和正则的应用和 [打印本页]

作者: qq496099229    时间: 2015-5-31 09:48
标题: 分析别人写的123456789=110的代码,让大家领悟递归遍历和正则的应用和
public class suanfa {  
    public static void main(String[] args){  
        String str = "123456789";  
        fun(str,1);     // 调用函数,从1开始修改  
    }  


        // 遍历所有情况  
    public static void fun(String v, int n) {   
        if(n==9){   // 当数字达到9时,检验结果
            recheck(v);  
        }else{  // 递归向后修改,数字 变为 数字加符号  
            fun(v.replace(n+"", n+"+"),n+1);  //两个数之间添加‘+‘
            fun(v.replace(n+"", n+"-"),n+1);  //两个字符之间添加'-‘'
            fun(v,n+1);  //两个字符什么都不加
        }  
    }  
    // 验证 并 输出  
    public static void recheck(String str){  
        String[] s = str.split("[\\+]");  //根据给定正则表达式的匹配拆分此字符串。
        int sum = 0;      //
        for(String t:s){  
            String[] sub = t.split("[\\-]");  
            int num = Integer.parseInt(sub[0]);  
            // 计算负数  
            for(int i=1;i<sub.length;i++){     //形如2-4-8
                num -= Integer.parseInt(sub[i]);  
            }  
            sum += num; // 正数或负数结果 加到 总和上  
        }  
        if(sum == 110){  
            System.out.println(str);  
        }  
    }  
}  
作者: 流水0215    时间: 2015-5-31 14:19
楼主辛苦了,赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2