给定一个整数,可以在任意位置添加加号,也可以不添加加号,最终通过加法可以得到一个新的整数,求所有得到的整数的和 例如输入345,输出444,用java实现
时间: 2024-05-01 17:17:18 浏览: 38
输入一个整数,计算并输出该数的数字之和.java
思路:
这道题可以使用递归的方式来解决。每次在当前数字后面添加一个加号或者不添加加号,分别递归调用求解后续数字的结果,并将两个结果相加。
具体实现:
1. 用一个变量 sum 记录所有得到的整数的和;
2. 当前数字 cur 可以被分成两部分,即前缀 prefix 和后缀 suffix,初始时 prefix 为 0,suffix 为整个数字;
3. 如果当前 suffix 为空,说明已经遍历完整个数字,将当前 prefix 加入到 sum 中;
4. 否则,分别递归调用添加加号和不添加加号的情况,更新 prefix 和 suffix,并将两种情况的结果相加。
代码实现:
```
public class Main {
public static void main(String[] args) {
int num = 345;
int sum = solve(num, 0, String.valueOf(num));
System.out.println(sum);
}
public static int solve(int cur, int prefix, String suffix) {
if (suffix.equals("")) { // suffix 为空,说明已经遍历完整个数字
return prefix;
} else {
// 添加加号的情况
int a = Integer.parseInt(suffix.substring(0, 1));
int b = Integer.parseInt(suffix.substring(1));
int res1 = solve(b, prefix + a, String.valueOf(b));
// 不添加加号的情况
int c = Integer.parseInt(suffix.substring(0, 2));
int res2 = solve(c, prefix, suffix.substring(2));
return res1 + res2;
}
}
}
```
阅读全文