Java后台如何判断一串数字是否连续,连续合并数字

例如:Integer[] NoNum ={1,2,3,5,7,8,9,10,13}

        输出的结果为 1-3,5,7-10,13

2个回答

这是递归的做法。

 public class Main {
    public static void main(String[] args) {
        Integer[] NoNum = {1, 2, 3, 5, 7, 8, 9, 10, 13};
        String result = convert(NoNum, 0);
        System.out.println(result.substring(0, result.length() - 1));
    }

    public static String convert(Integer[] ints, int index) {
        int end = index;
        if (ints.length == index) {//结束条件,遍历完数组
            return "";

        } else {
            for (int i = index; i < ints.length; i++) {
                if (i < ints.length - 1) {
                    if (ints[i] + 1 == ints[i + 1]) {
                        end = i;
                    } else {
                        if (i > index)
                            end = end + 1;
                        break;
                    }
                } else {
                    if (end == ints.length - 2) {
                        end = ints.length - 1;
                        break;
                    }
                }
            }
            if (index == end)//相等说明不连续
                return ints[index] + "," + convert(ints, end + 1);
            else//连续
                return ints[index] + "-" + ints[end] + "," + convert(ints, end + 1);

        }

    }
}

JFree_Wolf
JFree_Wolf 回复qq_41877813: 第一个页面的dom传递到第二个页面,第二个页面写值点击确定后,修改之前传过来的dom中的某个区域值,这个值就是第二个页面传过来的。第一个页面再来操作这个值
11 个月之前 回复
qq_41877813
qq_41877813 回复JFree_Wolf: java前台js怎么从第一个页面获取值传到第二个页面,并不刷新第二个页面
11 个月之前 回复
JFree_Wolf
JFree_Wolf 回复qq_41877813: 发了。
11 个月之前 回复
qq_41877813
qq_41877813 那你也发我吧,谢谢啦
11 个月之前 回复

这个简单,写一个状态机搞定:

state 表示状态,0表示开始状态或者前面的是独立的
1表示在连续之中
2表示最后一个
状态迁移图

图片说明

class Untitled {
    public static void main(String[] args) {
        int[] NoNum ={1,2,3,5,7,8,9,10,13};
        int state = 0;
        String result = "";
        for (int i = 0; i < NoNum.length; i++)
        {
            if (i == NoNum.length - 1) state = 2;
            if (state == 0) 
            {
                if (NoNum[i + 1] == NoNum[i] + 1) 
                {
                    result += Integer.toString(NoNum[i]);
                    result += "-";
                    state = 1;
                }
                else
                {
                    result += Integer.toString(NoNum[i]);
                    result += ",";
                }
            }
            else if (state == 1)
            {
                if (NoNum[i + 1] != NoNum[i] + 1) 
                {
                    result += Integer.toString(NoNum[i]);
                    result += ",";
                    state = 0;
                }
            }
            else
            {
                result += Integer.toString(NoNum[i]);
            }
        }
        System.out.println(result);
    }
}

上机验证结果:
1-3,5,7-10,13

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_41877813: 这个问题采纳了我的回答,重开一个问题,回答你。
11 个月之前 回复
qq_41877813
qq_41877813 回复qq_41877813: java前台js怎么从第一个页面获取值传到第二个页面,并不刷新第二个页面
11 个月之前 回复
qq_41877813
qq_41877813 谢谢大佬
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
判断一串数字是否连续,连续合并数字
现有一串数字,例如:rn69-78,79-88,89-95,96-102,103,104,131-134,135-149,150-153,190,242-243rn需要转变为以下结果:rn69-104,131-153,190,242-243rnrn需要如何处理呢?rnrn初步想通过数组实现,先用split分组,得到各个数字组合,然后再判断前后2个数字,rn但是循环判断时老是出错,得不到正确结果,请各位帮帮忙,谢谢!rn
给一串数字,判断是否连续
题在标题,思路在代码 #include int main() { int arr[] = { 8 , 3, 2, 6, 4, 5, 3, 7 }; //一组任意数字 int sz = sizeof(arr) / sizeof(arr[0]); //求任意数字数量 int Min = arr[0]; //假设第一个数字为最小 int count = 0; //统计数字排列
判断数字是否连续
如:现有一数组 int i[]=2,1,3,5,6,7,8,10,12,14,16,17,18,19,21;rn要得到类似1-3,5-8,10,12,14,16-19,21这样的结果,用java怎么写呀?
怎么判断数字是否连续?
[img=http://student.csdn.net/attachment/201008/5/239026_128097680054dD.jpg][/img]rn如图 显示级别 只能输入的数字rnQ: rn1.如何接收"显示级别" 一列的数字rn2.接收后如何判断这一组数字是否为连续数字并且从1开始(1,2,3,4......∞)
asp.net 判断数字是否连续
判断1-12之间的数字是否连续,比如说:7,8,12就不连续
判断数字是否连续问题!!
从33个数中随机取出几个数,然后进行排序,判断这一组数是否有连续的.rn如 1 2 5 7 8 9 这里边有两组连续的分别为 1 2 和7 8 9 前者我们称之为两连续rn后边的7 8 9为三连续,最后返回最大的那个 也就是说返回3就行了 请大家帮帮忙
如何快速判断数字是否连续
我有表1,分别有字段CITY,STORE,NF,XSE,假如要判断某个城市某个时间段哪些店有连续的销售额,现在问题是如何快速地判断这些店在这个时间段内是否连续?rn比如我要查找广州08年全年都有销售额的店
判断是否是连续的数字
[code=&quot;java&quot;] package com.test; public class Test { /** * @param args */ public static void main(String[] args) { int[] arrray = { 9, 8, 7, 6, 5, 4, 3, 2, 1 }; System.out.println...
c# 判断连续数字。
1,2,3,4rnrn2,4,5,6rnrn如果是连续的一串数字,返回truernrn
SQL能从一串数字中判断是否连续吗?
我有一个表,我想统计一下,能得到最后的那个结果吗??rn[code=sql]rn;with T asrn(rnselect '1' as 编号 ,'A' as 类型 union ALLrnselect '2' ,'A' union ALLrnselect '3' ,'A' union ALLrnselect '4' ,'A' union ALLrnselect '10' ,'A' union ALLrnselect '11' ,'A' union ALLrnselect '12' ,'A' union ALLrnselect '13' ,'A' union ALLrnselect '14' ,'A' union ALLrnselect '20' ,'B' union ALLrnselect '21' ,'B' union ALLrnselect '22' ,'B' union ALLrnselect '23' ,'B' union ALLrnselect '31' ,'B' union ALLrnselect '32' ,'B' union ALLrnselect '33' ,'B' union ALLrnselect '34' ,'B'rn) SELECT * FROM Trnrn------rn类型 起号 止号rnA 1 4rnA 10 14rnB 20 23rnB 31 34rn[/code]rnrn如果不行,能否有其他的解决办法?
判断数组中的数字是否连续相邻
一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现;0是例外,可以反复出现。设计一个算法,当从该数列中随意选取5个数值时,判断这5个数值是否连续相邻。需要注意以下4点: (1)5 个数值允许是乱序的,如 8 7 5 0 6。 (2)0 可以通配任意数值,如8 7 5 0 6 中的 0 可以通配 9 或者 4。 (3)0 可以多次出现。 (4)全0算连续,只有一个非
判断时间或者数字是否连续
一、判断时间数组是否连续(格式:yyyyMMdd) public static String convert(String[] ints, int index) { int end = index; if (ints.length == index) {//结束条件,遍历完数组 return &quot;&quot;; } else { for (int...
一串规律的数字,如何取“连续”数字最大最小值
例如 1,2,3,4,5,8,10,11,12,13,17,18 这几个数 取得连续的最大和最小值,1,5,8,10,11,13,17,18这些数给个思路.
求数字是否连续判断 的代码!
如下:rnrn字符串123456rnrn判断该字符串中每一个数字是否连续,连续几位!
如何从一串连续数字中查出丢失了哪个数字?
有一列是自动编号的,但是其中被人为删掉了几列。我如何知道被删掉的是哪列rnrnselect count(*),max(id)rnfrom table1rn————————————rn820 823rnrn谢谢!
连续数字
int[] arr1 = new int[] 1, 2, 3, 4 ;//truernint[] arr2 = new int[] 1, 6, 3, 4 , 8 , 9 ;//falsern请问如何用一句话表示,判断数组是否为连续数字?
如何生成连续的数字
比如生成 001----200 之间的数字 001 与002 分别填在edit1和edit2中rnrn001rn002rn003rn.......rnrn200rn
判断一串数字是否回文
判断一串数字是否回文有很多种方式,这里先给出纯数字的解法和利用字符串的解法。 1.纯数字的解法通常对时间复杂度和空间复杂度有很高的要求,特别是空间复杂度,不允许创建新的内存空间。 思路:利用整型数字的除以10取整(/)和对10取余(%)运算,将数字逆置,然后比较原数字与新数字是否相等来得出结果,以123454321为例,具体算法如下: public Boolean isNumberHuiwe
怎样判断是连续的数字
表格里有一列需这样显示:rn如果数据库中已经存在1-2 rn我在选择3-4 点击添加 不是增加记录 而是 在原有记录上那个列变成1-4rn如果选择的是 5-8 就增加一条记录rn如果数据中有2条记录分别是1-2,5-8 那我接着再选择 3-4 点击添加 就变成一条记录1-8rn那我怎样判断选择的数据与原来是连续的了? 我要怎么实现了?
连续相同数字判断的正则表达式
修改密码的功能中,我们常常用到正则表达式,来判断密码不能为连续的数字,如111111,那么正则表达式要如何写呢? 连续相同的六位数字:([0-9]\1{5})或([\d]\1{5}) ...
如何判断一串数字是否含有顺子
请问如何判断一串数字是否含有顺子rnrn例如58754123698 有123rn656478964 有789rn546654478 有654rn15871234577 有12345rn6487998765454 有987654rnrnrn求代码..,.rn
如何判断一个字符串中,是否含有连续8位的数字?
如题。
如何判断n个数字是否有连续
如何判断n个数字是否有连续 ,用正则表达式该如何写
提取数字连续区间用来合并
declare @t table(ID int,[Begin] int,[End] int)rninsert into @t select 1,1,3rninsert into @t select 2,4,5rninsert into @t select 3,6,8rninsert into @t select 4,11,13rninsert into @t select 5,15,18rninsert into @t select 6,19,22rninsert into @t select 7,23,33rninsert into @t select 8,34,52rnrnselect * from @trn[Begin]表示数字起点,[End]表示数字的终点rnrn第一条数据1,3表示1-3之间的数rn第二条数据4,5表示4-5之间的数rn第三条数据6,8表示6-8之间的数rn第四条数据11,13表示11-13之间的数rnrn每条的数据[Begin]、[End]都比前一条数据的[Begin]、[End]要大rnrn因为1-3、4-5、6-8是连续的,可以合并为1-8rnrn我希望找出所有可以合并的连续区间,并尽可能合并为最大的区间
C#二分法查找连续数字
C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,C#二分法快速查找查找连续数字,
LeetCode.180. 连续出现的数字
分析: 自连接两次,每次差值为1,检索第一个表即可。 代码: select distinct l1.Num as ConsecutiveNums from Logs l1 left join Logs l2 on l1.Id=l2.Id-1 left join Logs l3 on l2.Id=l3.Id-1 where l1.Num=L2.Num and l2.Num=l3.Num; ...
leetcode180. 连续出现的数字
题目 编写一个 SQL 查询,查找所有至少连续出现三次的数字。 例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。 解题思路 直接查找3行num相等的数据即可 代码如下 select distinct l1.num as ConsecutiveNums from logs l1, logs l2, logs l3 where l1.id = l2.id-1 and l2....
CONNECT BY 构造连续数字
create table a(item varchar(10), f int, t int);  insert into a values('A', 1, 10);  insert into a values('B', 20, 40);  insert into a values('C', 45, 50); commit; SQL> select it
最长连续数字子串
#include #include using namespace std; bool isdigit(char c) { if(c>='0'&&c<='9') return true; return false; } string LongestDigtalSubStr(string s) { int cur_len=0; int max_le
连续出现的数字
编写一个 SQL 查询,查找Logs 表所有至少连续出现三次的数字。 +----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | +----+-----+ Code SELECT distinct ...
连续数字分组
/** *  */package me.abel.algorithm;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Stack;/** * @author abel * */public class DistinguishDigit {    public stat...
【正则】连续相同的数字
例如:rn55.0000 替换成55 rn55.0600 替换成55.06rn55.0678 替换成55.0678 rn55.0670 替换成55.0670rn55.1000 替换成55.1rnrn[code=C#]rnRegex.Replace(s, @"", "", RegexOptions.IgnoreCase);rn[/code]
关于连续数字的正则表达式
密码至少为6位并不允许出现三个及以上连续数字(如123,321),请问各位大大有没有正则表达式一步到位匹配。如果有最好给个说明。在线等,急!!!!!!!!!!!
查询连续的数字
[code=sql]USE tempdb rnIF OBJECT_ID('test') IS NOT NULLrn DROP TABLE test; rnGOrnCREATE TABLE test rn( rn id intrn);rnGOrnINSERT INTO test VALUES rn(1),(2),(3),(5),(8),(9),(10),(11);rnGOrn-------------------------------------rnrn-------------------------------------rn/*rnid_star id_endrn------- -------rn1 3rn8 11rn*/[/code]
三个连续数字
<span>七年SQL语句编写经验。满满的干货!</span><br /><br /><span>在网上找了好多SQL数据库的教程,但你还会面临这样的问题:</span><br /><br /><span>1. 自己写了SQL却不知道对不对。</span><br /><span>2. 在上线后发现原有的数据内容SQL语句执⾏结果没问题, 但是数据变化了以后SQL返回的结果就错误了。</span><br /><span>3. 稍微复杂⼀点的SQL就不知道该如何写了。</span><br /><span>4. 看不懂同⾏写的SQL是为什么。</span><br /><span>5. 不知道索引的原理。</span><br /><span>6. 不知道怎么加索引能够提⾼查询性能</span><br /><br /><span>纵观全网的教程都只停留在概念解析的层面,没有深入剖析原理,所以看了那么多的教程,可还是不会写。</span><br /><br /><span>本教程与其他教程不同带你深入了解原理,让你真正了解什么是SQL语句,让你懂得SQL语句的编写⽅法。不再</span><br /><span>为SQL语句而烦恼。真正做到面对任何问题能够判断出SQL语句是不是能够实现,该怎样实现。 </span>
正则求连续数字
需要用正则表达式判断一串数字是否以下格式:rnABCABC(如:123123,ABC是0~9连续的三个数字)rnABABAB(如:454545,AB是0~9连续的两个数字)rn
正则-匹配连续数字
范围:0 - 9rn要求:数字需要连续,即:0123,1234,12,234,567,123,123456,123456789这样的可以通过rn 03456只能匹配出3456rn
LeetCode180——连续出现的数字
我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/consecutive-numbers/description/ 题目描述: 知识点:多表联查 思路:三表联查 由于使用交叉连接查询,返回的是笛卡尔积形式,会返回3个一样的满足条件的数据,我们需要用DIST...
数字连续的子数组
本总结是是个人为防止遗忘而作,不得转载和商用。 题目          给定长度为N的数组A[0…N-1],求递增且连续数字最长的子数组的长度。          如数组:1, 2, 3, 34, 56,57, 58, 59, 60, 61, 99, 121的连续数字最长的一段为56, 57, 58, 59, 60, 61,长度为6。 思路          用p记录所求数组的长度,并初
连续数字最大乘积
在下面这个1000位正整数中,连续4个数字的最大乘积是 9 × 9 × 8 × 9 = 5832。73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 858615607891129494954595017379583319528532088055
相关热词 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天 c#func链接匿名方法 c#怎么创建文件夹 c#从键盘接收空格 c#da/ad c#部门请假管理系统 c#服务器socket c# 默认的访问修饰符