黑马程序员技术交流社区
标题:
分析别人写的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