`
zhufeng1981
  • 浏览: 73591 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何判断连号(如123456),同号(如666666),双连号(如:112233)的简单算法

阅读更多

关于一个网友提出的一个如何判断连号(如123456),同号(如666666),双连号(如:112233)的简单算法,想来也不是很复杂,我思考后的一种解答,共大家参考。

 

package com.ibm.demo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 简单例子判断连号,同号,双连号。
 * @author Frank
 * @version 1.0 
 * @since 2010.6.8
 */
public class T {

	public static boolean check(String str) {
		boolean b = true;
		String message = "不符合要求。";
		long l = str.length();
		if (l < 6||!check2(str)) {
			b = false;
		} else {
			char[] c = str.toCharArray();
			for (int i = 0; i < c.length - 1; i++) {
				if (c[i + 1] - c[i] != 0) {
					b = false;
					break;
				}
			}
			message = l+"位同号"+str;
			if(!b){
				b = true;
				for (int i = 0; i < c.length - 1; i++) {
					if (c[i + 1] - c[i] != 1) {
						b = false;
						break;
					}
				}
				message = l+"位连号"+str;
				if(!b){
					b = true;
					if(c.length % 2 == 0){
					for (int i = 0; i < c.length - 2; i++) {
						if (!(c[i + 1] - c[i] == 0&&c[i + 2] - c[i+1] ==1)&&!(c[i + 1] - c[i] == 1&&c[i + 2] - c[i+1] ==0)) {
							b = false;
							break;
						}
					}
					if(b){
						message = l+"位双连号"+str;
					}else{
						message = "不符合要求。";
					}
					}else{
						b = false;
						message = "不符合要求。";
					}
					
				}
				
			}
			
		}
		
		
		System.out.println(message);
		
		return b;
	}

	
	public static boolean check2(String str) {
		boolean b = false;
		String expr = "\\d+";   
		//b = str.matches(expr);   // simple way to check type
		Pattern p = Pattern.compile(expr);
		Matcher m = p.matcher(str);
		b = m.matches();
		return b;
	}
	
	
	public static void main(String[] args) {
		String s1 = "112233445566778899";
		String s2 = "123456789";
		String s3 = "666666666666666666";

		System.out.println(check(s1));
		System.out.println(check(s2));
		System.out.println(check(s3));
	}
}

 

 

 

分享到:
评论
2 楼 zhufeng1981 2012-01-12  
songduanlei 写道
nice method

thank you.
1 楼 songduanlei 2012-01-12  
nice method

相关推荐

    07A2 双连通分量分解:算法 | 实例1

    双连通分量分解是图论中的一个概念,主要应用于数据结构和算法设计。在无向图中,如果两个顶点之间存在多条路径,即使删除了某些边,它们仍然保持连接状态,那么这些顶点就属于同一个双连通分量。双连通分量分解的...

    带约束点的最短路算法(自认为世界前沿的算法)

    【带约束点的最短路算法】是一种在图论中寻找最短路径的算法,它扩展了经典的Dijkstra算法,增加了必须经过特定节点的约束条件。这种算法的应用场景包括网络规划、交通路线优化等,特别是在有特定站点需求的路径规划...

    强联通分支 Gabow算法(英文)

    Gabow算法通过识别那些没有割点的路径段来确定双连通分量。割点是那种如果被删除,会导致图的连通性受损的顶点。在搜索过程中,算法会记录下哪些边属于同一双连通分量,从而避免了传统的基于“LOWPOINT”值的方法。 ...

    tarjan算法

    ### Tarjan算法详解 #### 一、背景及定义 在计算机科学领域,特别是...此外,Tarjan 算法与求无向图的双连通分量(割点、桥)的 Tarjan 算法之间也存在着紧密的联系,这对于深入理解 Tarjan 系列算法具有重要意义。

    Tarjan 算法论文 DEPTH-FIRST SEARCH AND LINEAR GRAPH ALGORITHMS.pdf

    Tarjan算法是图论领域中一个经典的算法,由美国计算机科学家罗伯特·塔扬(Robert Tarjan)提出,主要用于深度优先搜索(DFS)遍历图中的节点,并对图中的强连通分量(Strongly Connected Components,SCCs)或双...

    acm图论所有的算法模版

    在ACM图论算法中,图的割点、桥和双连通分量是重要的概念。以下是关于这些知识点的详细解释: 1. **割点(Cut Vertex)**: 割点是指在一个无向图中,如果移除该节点会导致原本连通的图变成不连通或增加连通分量的...

    java双连表

    在Java编程中,双连表(也称为双向链表)是一种数据结构,它允许在列表中的元素之间进行双向连接。这种结构与单向链表不同,单向链表只能从一个方向遍历,而双向链表可以从两个方向进行。本文将深入探讨如何在Java中...

    算法刷题提高阶段-图论11

    在算法学习的过程中,图论是不可或缺的一个重要领域,它在计算机科学中有着广泛的应用,如网络设计、数据结构、搜索算法等。本阶段的主题“算法刷题提高阶段-图论11”着重于通过刷题的方式提升我们对图论的理解和...

    图论- 图的连通性- Tarjan 求双连通分量.rar

    本资源“图论- 图的连通性- Tarjan 求双连通分量.rar”着重讨论了图的连通性以及一种用于求解双连通分量的著名算法——Tarjan算法。 首先,我们理解一下图的连通性。一个无向图是连通的,如果任意两个顶点之间都...

    图论模板详细

    以上提及的算法和概念在解决图论问题时具有重要地位,是算法竞赛如ACM/ICPC中的常见题型。掌握这些知识点对于解决复杂的图论问题至关重要。文档提到的代码模板能够为读者提供现成的算法实现,减少编写代码的难度,...

    matlab资源 使用动画演示在Python中实现的双连杆机械臂(2自由度)的简单控制 仅供学习参考用代码.zip

    在本资源中,我们主要探讨如何使用Python编程语言模拟并可视化一个双连杆机械臂(2自由度)的简单控制系统。Matlab虽然在工程计算和建模方面非常强大,但Python由于其开源、灵活和丰富的库支持,已经成为数据科学和...

    一种抗震复合双连梁的制作方法.docx

    本文介绍的是一种抗震复合双连梁的制作方法,旨在解决现有双连梁施工工艺中难以保证水平通缝形成以及施工速度慢的问题。该方法通过优化结构设计,提升了双连梁的抗震性能和施工效率。 首先,这种抗震复合双连梁包括...

    ACM试题集和答案

    ACM算法试题集是面向计算机编程竞赛,尤其是ACM国际大学生程序设计竞赛(ACM-ICPC)的参赛者们提供的丰富资源。这类竞赛通常要求参赛者在限定时间内使用计算机编程解决一系列复杂的算法问题。ACM算法试题集和答案...

    凌彦达_面向连通性和匹配问题的高效图算法研究-南邮ACM校队内部资料1

    【摘要】中提到的这篇论文主要探讨了图算法在解决连通性和匹配问题中的应用,具体涉及图的双连通性、最小割问题以及二分图的最大匹配和最优匹配。图的双连通性是衡量图中任意两点间路径数量的一个重要属性,它反映了...

    POJ3177-Redundant Paths 【Tarjan-边双连通分量-缩点】

    POJ3177-Redundant Paths 【Tarjan-边双连通分量-缩点】 解题报告+AC代码+测试数据 http://hi.csdn.net/!s/GPAY6Z 附:我所有的POJ解题报告链接 . http://blog.csdn.net/lyy289065406/article/details/6642573

    号码魔方,最好的手机号码整理软件

     4、按各类组织特征导入(双连号、三连号、含特殊号)  5、按号码数据特征导入导出。(更新到第二位)  6、号码乱序和排序。  7、按地区导出(含2008、10月更新数据)  8、按运营商导出(新增,移动、联通、...

    NOIP2017模板复习手册 - Kvar_ispw171

    【NOIP2017模板复习手册 - Kvar_ispw171】是针对信息学竞赛(Olympiad in Informatics)的复习资料,重点涵盖了数学、算法等多个领域的重要知识点。以下是这些知识点的详细说明: **数学部分:** 1. **最大公约数 ...

    如何设置Windows 8双连屏全景主题.docx

    在Windows 8操作系统中,用户可以充分利用双显示器配置来创建一个独特的全景体验,这被称为“双连屏全景主题”。这个功能允许用户将一张超宽的壁纸横跨两个显示器,营造出一种连续的画面效果,极大地提升了视觉享受...

    双连拱地铁隧道开挖支护技术

    通过改进工法解决广州地铁三号线支线某双连拱地铁隧道因设计不周、埋深浅、周边环境复杂等特殊工程条件,无法正常开挖中导洞的问题。使中导洞顺利开挖后,正线隧道顺利开挖支护。改进原设计方案中的CRD工法,利用正线...

    pcb图,双连电位器PCB图

    pcb图,双连电位器PCB双连电位器PCB图

Global site tag (gtag.js) - Google Analytics