如果没有负整数,一共有 8037 种拆法。
创新互联专注于右江网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供右江营销型网站建设,右江网站制作、右江网页设计、右江网站官网定制、成都小程序开发服务,打造右江网络公司原创品牌,更为您提供右江网站排名全网营销落地服务。
源码:
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public final static int Sum = 100;
static SetString Combinations = new TreeSet();
public static void main(String[] args) throws IOException {
for (int i1 = 0; i1 = Sum; i1++) {
for (int i2 = 0; i2 = Sum; i2++) {
for (int i3 = 0; i3 = Sum; i3++) {
for (int i4 = 0; i4 = Sum; i4++) {
String s = GetString(new int[] {i1, i2, i3, i4});
if (CheckNumbers(i1, i2, i3, i4)) {
Combinations.add(s);
}
}
}
}
}
System.out.println(Combinations);
System.out.println(Combinations.size());
FileWriter writer = new FileWriter("results.json");
writer.write(Combinations.toString());
writer.flush();
writer.close();
}
public static String GetString(int[] numbers) {
sort(numbers, 0, 3);
return Arrays.toString(numbers);
}
public static void sort(int[] arr,int begin,int end) {
int a = begin;
int b = end;
if (a = b) return;
int x = arr[a];
while (a b) {
while (a b arr[b] = x) b--;
if (a b) {
arr[a] = arr[b];
a++;
}
while (a b arr[a] = x) a++;
if (a b) {
arr[b] = arr[a];
b--;
}
}
arr[a] = x;
sort(arr,begin,a-1);
sort(arr,a+1,end);
}
public static boolean CheckNumbers(int i1, int i2, int i3, int i4) {
return (i1 + i2 + i3 + i4) == Sum;
}
}
1、根据题意需要有两个步骤,第一识别第二替换,使用现成方法即可
2、示例如下,指定数字即代码中的2|5可根据需要自行替换
String s ="1222223455555555555555556666666";
System.out.println(s.replaceAll("([2|5])\\1{1,}", "$1$1$1"));
哈,你的写在一起是没问题的.
在Clean code(整洁代码)里面,提供把功能拆分和抽取,比如你的方法里面有一个判断字符串是否为空的代码:
if(null==str||"".equals(str.trim()){....}
而你这一段代码,在其他地方也经常复用,那么你就可以抽取出去成为一个工具类了
public class StrUtil{
public boolean isEmpty(String str){
return null==str ||"".equals(str.trim());
}
}
那么在你之前的代码里面可以使用,以下的来代替
if(StrUtil.isEmpty(str)){
....
}
这样子,你的代码重用性和可阅读性就提高不少了.
要怎样子才抽取出去呢? 最简单的2点
同一段代码多次重用.
职能单一,一个方法只实现一种功能
详细资料,推荐书籍:CleanCode代码整洁之道
比如一个三次方程: a * x * x * x + b * x * x + c * x + d = 0;
程序是非常强大的,直接上代码,用最基本的方法:
public static void main(String[] args) {
// 这是从键盘输入的4个参数
int a = args[0];
int b = args[1];
int c = args[2];
int d = args[3];
// 可以把等式堪称a * x * x * x + b * x * x + c * x + d = 0;
// 求0到1000的整数根
for(int i = 0; i 1000; i ++) {
int result = a * i * i * i + b * i * i + c * i + d;
if(result == 0) {
// 此处应该有掌声
System.out.println("找到一个根:" + i);
}
}
}
希望我的答案能帮助你, 谢谢。
如果这个java代码里面有多个类,每个类放到一个java文件中。如果只有一个类,那就没办法了。只能通过优化业务逻辑,来减少代码。
一般只要代码格式、注释规范,长一点并不会影响可读性。倒是不好的业务逻辑会影响执行的性能。