合并连续数字的算法
2008-05-31 14:11
253 查看
public class Test {
public static void main(String[] args) {
String str = new String(
"1,2,3,4,5,6,7,8,9,11,13,14,1000,1001,1002,1003");
String[] s = str.split(",");
int[] num = new int[s.length];
String result = "";
for (int i = 0; i < s.length; i++) {
num[i] = Integer.parseInt(s[i]);
}
for (int i = 0; i < num.length; i++) {
if (i == 0) {
result = "" + num[i];
} else if (i == num.length - 1) {
if (num[i] - num[i - 1] == 1) {
result = result + "-" + num[i];
} else {
result = result + "," + num[i];
}
} else {
if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] == 1)) {
continue;
}
if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] != 1)) {
result = result + "-" + num[i];
}
if ((num[i] - num[i - 1] != 1)) {
result = result + "," + num[i];
}
}
}
System.out.println(result);
}
}
public static void main(String[] args) {
String str = new String(
"1,2,3,4,5,6,7,8,9,11,13,14,1000,1001,1002,1003");
String[] s = str.split(",");
int[] num = new int[s.length];
String result = "";
for (int i = 0; i < s.length; i++) {
num[i] = Integer.parseInt(s[i]);
}
for (int i = 0; i < num.length; i++) {
if (i == 0) {
result = "" + num[i];
} else if (i == num.length - 1) {
if (num[i] - num[i - 1] == 1) {
result = result + "-" + num[i];
} else {
result = result + "," + num[i];
}
} else {
if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] == 1)) {
continue;
}
if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] != 1)) {
result = result + "-" + num[i];
}
if ((num[i] - num[i - 1] != 1)) {
result = result + "," + num[i];
}
}
}
System.out.println(result);
}
}
相关文章推荐
- 合并连续数字的算法
- 在论坛中出现的比较难的sql问题:27(字符串拆分、字符串合并、非连续数字的间隔范围、随机返回字符串)
- 算法学习-数字连续的子数组
- js-FCC算法Smallest Common Multiple。找出两个参数和它们之间的连续数字的最小公倍数。
- 算法基础:整数排序问题(连续整数只保留首尾两个数字)
- 微软算法100题25 查找连续最长的数字串
- 奇妙的算法—怎么计算一段连续数字的所有约数的和
- 算法题目---和为s的两个数字vs和为s的连续正数序列
- 算法题目---计算数字连续和
- 笔试算法题(15):-1到N中包含1的数字的个数 & 连续和为N的序列
- 数据结构——算法之(024)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 名企笔试:好未来2017秋招笔试(连续最长的数字串)2017-03-05 算法爱好者
- 算法基础:整数排序问题(连续整数仅仅保留首尾两个数字)
- 每天学习一算法系列(22)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 算法学习十一----连续最长的数字串
- 算法 - n个数字形成的圆圈中循环删除第m个数字(C++)
- 改进版网页表格的合并单元格(支持不连续的列合并)
- 数字图像处理,图像锐化算法的C++实现
- 数字特征值-对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值
- 每日一道算法题——3个数字相加等于0