问题:
代码:
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
import static java.lang.Math.max;
public class SequenceLength {
public static void main(String[] args) {
int leng = continuitySeq(10, "6,7,1,2,3,4,6,2,2,2,2,2");
System.err.println(leng);
}
private static int continuitySeq(int sum, String seq) {
int leng = 0;
String[] split = seq.split(",");
for(int i=0;i< split.length;i++) {
int sumCopy = sum;
int subLeng = 0;
for (int j = i; j <= split.length-1; j++) {
Integer elementPre = j>i ? Integer.valueOf(split[j-1]) : 0;
Integer element = Integer.valueOf(split[j]);
if (element >= elementPre) {
sumCopy -= element;
if(sumCopy == 0 ){
subLeng = j-i+1;
}
}else{
break;
}
}
leng = max(leng, subLeng);
System.out.println("i的值是"+Integer.valueOf(split[i])+",subleng的长度="+subLeng+",leng的长度="+leng);
}
if (leng > 1) {
return leng;
}
return -1;
}
}
输出结果:
i的值是6,subleng的长度=0,leng的长度=0
i的值是7,subleng的长度=0,leng的长度=0
i的值是1,subleng的长度=4,leng的长度=4
i的值是2,subleng的长度=0,leng的长度=4
i的值是3,subleng的长度=0,leng的长度=4
i的值是4,subleng的长度=2,leng的长度=4
i的值是6,subleng的长度=0,leng的长度=4
i的值是2,subleng的长度=5,leng的长度=5
i的值是2,subleng的长度=0,leng的长度=5
i的值是2,subleng的长度=0,leng的长度=5
i的值是2,subleng的长度=0,leng的长度=5
i的值是2,subleng的长度=0,leng的长度=5
5
如有错误或改进,欢迎指正,谢谢