关于一个网友提出的一个如何判断连号(如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));
}
}
分享到:
相关推荐
双连通分量分解是图论中的一个概念,主要应用于数据结构和算法设计。在无向图中,如果两个顶点之间存在多条路径,即使删除了某些边,它们仍然保持连接状态,那么这些顶点就属于同一个双连通分量。双连通分量分解的...
【带约束点的最短路算法】是一种在图论中寻找最短路径的算法,它扩展了经典的Dijkstra算法,增加了必须经过特定节点的约束条件。这种算法的应用场景包括网络规划、交通路线优化等,特别是在有特定站点需求的路径规划...
Gabow算法通过识别那些没有割点的路径段来确定双连通分量。割点是那种如果被删除,会导致图的连通性受损的顶点。在搜索过程中,算法会记录下哪些边属于同一双连通分量,从而避免了传统的基于“LOWPOINT”值的方法。 ...
### Tarjan算法详解 #### 一、背景及定义 在计算机科学领域,特别是...此外,Tarjan 算法与求无向图的双连通分量(割点、桥)的 Tarjan 算法之间也存在着紧密的联系,这对于深入理解 Tarjan 系列算法具有重要意义。
Tarjan算法是图论领域中一个经典的算法,由美国计算机科学家罗伯特·塔扬(Robert Tarjan)提出,主要用于深度优先搜索(DFS)遍历图中的节点,并对图中的强连通分量(Strongly Connected Components,SCCs)或双...
在ACM图论算法中,图的割点、桥和双连通分量是重要的概念。以下是关于这些知识点的详细解释: 1. **割点(Cut Vertex)**: 割点是指在一个无向图中,如果移除该节点会导致原本连通的图变成不连通或增加连通分量的...
在Java编程中,双连表(也称为双向链表)是一种数据结构,它允许在列表中的元素之间进行双向连接。这种结构与单向链表不同,单向链表只能从一个方向遍历,而双向链表可以从两个方向进行。本文将深入探讨如何在Java中...
在算法学习的过程中,图论是不可或缺的一个重要领域,它在计算机科学中有着广泛的应用,如网络设计、数据结构、搜索算法等。本阶段的主题“算法刷题提高阶段-图论11”着重于通过刷题的方式提升我们对图论的理解和...
本资源“图论- 图的连通性- Tarjan 求双连通分量.rar”着重讨论了图的连通性以及一种用于求解双连通分量的著名算法——Tarjan算法。 首先,我们理解一下图的连通性。一个无向图是连通的,如果任意两个顶点之间都...
以上提及的算法和概念在解决图论问题时具有重要地位,是算法竞赛如ACM/ICPC中的常见题型。掌握这些知识点对于解决复杂的图论问题至关重要。文档提到的代码模板能够为读者提供现成的算法实现,减少编写代码的难度,...
在本资源中,我们主要探讨如何使用Python编程语言模拟并可视化一个双连杆机械臂(2自由度)的简单控制系统。Matlab虽然在工程计算和建模方面非常强大,但Python由于其开源、灵活和丰富的库支持,已经成为数据科学和...
本文介绍的是一种抗震复合双连梁的制作方法,旨在解决现有双连梁施工工艺中难以保证水平通缝形成以及施工速度慢的问题。该方法通过优化结构设计,提升了双连梁的抗震性能和施工效率。 首先,这种抗震复合双连梁包括...
ACM算法试题集是面向计算机编程竞赛,尤其是ACM国际大学生程序设计竞赛(ACM-ICPC)的参赛者们提供的丰富资源。这类竞赛通常要求参赛者在限定时间内使用计算机编程解决一系列复杂的算法问题。ACM算法试题集和答案...
【摘要】中提到的这篇论文主要探讨了图算法在解决连通性和匹配问题中的应用,具体涉及图的双连通性、最小割问题以及二分图的最大匹配和最优匹配。图的双连通性是衡量图中任意两点间路径数量的一个重要属性,它反映了...
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】是针对信息学竞赛(Olympiad in Informatics)的复习资料,重点涵盖了数学、算法等多个领域的重要知识点。以下是这些知识点的详细说明: **数学部分:** 1. **最大公约数 ...
在Windows 8操作系统中,用户可以充分利用双显示器配置来创建一个独特的全景体验,这被称为“双连屏全景主题”。这个功能允许用户将一张超宽的壁纸横跨两个显示器,营造出一种连续的画面效果,极大地提升了视觉享受...
通过改进工法解决广州地铁三号线支线某双连拱地铁隧道因设计不周、埋深浅、周边环境复杂等特殊工程条件,无法正常开挖中导洞的问题。使中导洞顺利开挖后,正线隧道顺利开挖支护。改进原设计方案中的CRD工法,利用正线...
pcb图,双连电位器PCB双连电位器PCB图