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

今天在网上看到一个好玩的题目哪来练练哈

J# 
阅读更多
引用

好像描述的由点问题,再细化点吧!
1、找出 连续相同的字符个数最少为min的字符串
2、对字符串排序,这里的排序不是指按字母排序,而是按“连续相同的字符个数”排序
比如:str1="abcdbcebcgh"  str2="eabcfbcxbcv" min=2
所得的结果希望是:
NO1. str1: start 0; end 2;  str2: start 1; end 3
        the same string: abc
NO2. str1: start 4; end 5;  str2: start 5; end 6
        the same string: bc
NO3. str1: start 4; end 5;  str2: start 8; end 9
        the same string: bc
NO4. str1: start 7; end 8;  str2: start 5; end 6
        the same string: bc
NO5. str1: start 7; end 8;  str2: start 8; end 9
        the same string: bc
因为abc比bc长,所以不在abc查找bc了,而其余的bc因为都相同,所以都需要输出



去重没写..

public class Test {
	public static void main(String[] args) {
		result("abcdbcebcgh","eabcfbcxbcv",2) ;
		Iterator it = set.iterator() ;
		int i= 0 ;
		while(it.hasNext()){
			i++ ;
			System.out.println("NO"+i+". "+it.next());
		}
	}
	
	private static char[] chars2 = null ;
	private static Set<Str> set = new TreeSet<Str>()  ;
	public static void result(String str1 , String str2 , int min){
		chars2 = str2.toCharArray() ;
		char[] chars1 = str1.toCharArray() ;
		for (int j = 0; j < chars1.length-min+1; j++) {
			for (int i = min; i < chars1.length-j+1; i++) {
				find(new String(chars1,j,i),j,i+j-1) ;
			}
		}
		
	}
	public static void find(String str,int begin ,int end){
		char[] cs = str.toCharArray() ;
		int k = 0 ;
		for (int i = 0; i < chars2.length; i++) {
			if(k==cs.length){
				set.add(new Str(str,begin,(i-k),end,(i-1))) ;
				k=0 ;
			}
			if(chars2[i]==cs[k]){
				k++ ;
			}else{
				k=0 ;
			}
		}
	}
}

class Str implements Comparable<Str>{
	private String str ;
	private int begin1 ;
	private int begin2 ;
	private int end1 ;
	public Str(String str, int begin1, int begin2, int end1, int end2) {
		this.str = str;
		this.begin1 = begin1;
		this.begin2 = begin2;
		this.end1 = end1;
		this.end2 = end2;
	}
	private int end2 ;
	public String getStr() {
		return str;
	}
	public void setStr(String str) {
		this.str = str;
	}
	public int getBegin1() {
		return begin1;
	}
	public void setBegin1(int begin1) {
		this.begin1 = begin1;
	}
	public int getBegin2() {
		return begin2;
	}
	public void setBegin2(int begin2) {
		this.begin2 = begin2;
	}
	public int getEnd1() {
		return end1;
	}
	public void setEnd1(int end1) {
		this.end1 = end1;
	}
	public int getEnd2() {
		return end2;
	}
	public void setEnd2(int end2) {
		this.end2 = end2;
	}
	public int compareTo(Str o) {
		// TODO Auto-generated method stub
		if(this.str.length()>o.getStr().length()){
			return -1 ;
		}else{
			return 1 ;
		}
	}
	public String toString(){
		return "str1: start "+begin1+"; end "+end1+"; str2: start "+begin2+"; end "+end2+"  \n  the same string:"+str;
	}
}

分享到:
评论
2 楼 ansjsun 2011-10-21  
mayan31370 写道
推荐你个博客看看,这哥们对文本比对的算法研究挺深的。可以借鉴。
http://www.cnblogs.com/grenet/archive/2010/06/01/1748448.html

谢谢啦,不错不错都很合我口味呵呵
1 楼 mayan31370 2011-10-13  
推荐你个博客看看,这哥们对文本比对的算法研究挺深的。可以借鉴。
http://www.cnblogs.com/grenet/archive/2010/06/01/1748448.html

相关推荐

    练练看小游戏SWING的实现

    总之,《练练看小游戏SWING的实现》这篇博客提供了Swing在游戏开发中的实际应用案例,帮助读者了解如何利用Java Swing库来创建一个简单的游戏。通过学习这篇博客,开发者不仅可以提升Swing的使用技能,还能掌握游戏...

    C#做的练练看

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、游戏以及Web应用等领域。本项目“C#做的练练看”显然旨在帮助...这是一个全面且有趣的练习,对于任何想要提升C#技能的人来说都是一个很好的挑战。

    java练练看

    在Java编程领域,"java练练看"这个标题可能指的是一个练习项目或者一系列的练习题,旨在帮助初学者或有经验的开发者通过实践来提升Java编程技能。描述中的"数据库附加上去即可用"暗示了这个项目可能包含了与数据库...

    EXCEL 练练看游戏

    总的来说,《EXCEL练练看游戏》巧妙地将Excel的计算和数据管理能力与VBA的编程能力结合,提供了一个独特的游戏体验。这不仅展示了Excel的多功能性,也为学习和掌握VBA提供了一个生动有趣的实践平台。对于想要提升...

    Java实现练练看

    在本项目"Java实现练练看"中,我们主要探讨的是使用Java编程语言来实现一个经典的游戏——连连看。这是一份非常适合初学者提升Java编程技能的实践作业。通过完成这个项目,学习者不仅可以巩固基础的Java编程概念,还...

    vue写的一个滴滴快车练练手

    "vue写的一个滴滴快车练练手"项目,显然旨在帮助开发者通过实践熟悉Vue.js框架,尤其是如何在实际场景中应用Vue来构建类似滴滴快车这样的应用。 在该项目中,我们可以学习到以下Vue.js相关的重要知识点: 1. **Vue...

    高仿练练开机数据录入

    在IT行业中,"高仿练练开机数据录入"可能指的是一个特定的应用程序或者系统功能,用于模拟实际操作过程中的数据输入。"练练"可能是这个软件或应用的名称,而"高仿"则暗示它旨在提供与真实环境相似的数据录入体验,...

    jQuery练练看实现源码

    "jQuery练练看实现"项目是一个利用jQuery技术来构建的游戏实践,它可以帮助开发者深入理解jQuery的基本用法和核心功能。下面我们将详细探讨该项目中的关键知识点。 首先,jQuery的引入是项目开始的第一步。通常,...

    练练看源码安卓

    "练练看源码安卓"是一个专为安卓开发者设计的学习资源,它提供了一个实际的连连看游戏的完整源代码,对于那些希望深入了解安卓应用开发的初学者来说,这是一个宝贵的实践平台。通过研究这个项目的源码,你可以学习到...

    日语能力测试2级听力练练练1-10期

    标题中的“日语能力测试2级听力练练练1-10期”表明这是一个针对日语能力测试2级,特别是听力部分的练习资源。这个练习材料涵盖了从第一期到第十期的内容,旨在帮助学习者逐步提升听力理解能力,以应对实际的日语能力...

    练练手,用mina2.0搭建一个nio客户端

    标题中的“练练手,用mina2.0搭建一个nio客户端”表明了本文将探讨如何使用Mina 2.0框架构建一个基于非阻塞I/O(NIO)的客户端应用。Mina是一个开源的Java框架,常用于开发高性能、高并发的网络通信应用,如TCP/IP和...

    宋词密码在手3秒作诗赋词 Java版本 闲来蛋疼练练手

    这个项目的核心是利用编程语言Java实现一个自动化创作宋词的工具,它旨在通过算法和编码技巧,模拟人类创作诗词的过程,使得用户只需短短三秒即可生成一首具有宋词韵味的诗词作品。该项目的开发者可能出于兴趣爱好...

    JavaSE练练看小游戏

    "JavaSE练练看小游戏"是一个练习项目,旨在帮助学习者通过实践来加深对Java语言的理解,特别是JavaSE的基本概念和技术。 在JavaSE中,我们首先会接触到的是基础语法,包括数据类型(如整型、浮点型、字符型和布尔型...

    找相同练练看代码

    在IT行业中,游戏开发是一项非常热门的技术领域,而Cocos2d-x则是一个广泛使用的开源游戏引擎,尤其适合2D游戏的开发。标题"找相同练练看代码"表明我们将探讨一个基于Cocos2d-x的游戏项目,可能是开发一款类似于“找...

    最近在做目标检测,偶然发现一个有趣的Plants vs. Zombies数据集,闲来无事练练手

    植物大战僵尸 95 版是经典游戏《植物大战僵尸》的一个极具特色的玩家自制版本。在保留原版经典塔防玩法的基础上,进行了诸多的改进与调整,使其难度和趣味性都大大增加。 游戏中,玩家依旧需要在自家的花园里合理...

    安卓应用-健康医疗-练练手机客户端 v3.1 安卓版.zip

    总的来说,"练练手机客户端 v3.1 安卓版"是一款集运动指导、健康监测、饮食管理、社交互动于一体的健康管理应用,以其丰富的功能和人性化的设计,为用户打造了一个全方位的健康生态系统。无论你是健身爱好者还是希望...

    2014研究生数学建模题目

    【标题】"2014研究生数学建模题目"涵盖了当年全国研究生数学建模竞赛的主要问题,这是一个旨在锻炼和评估研究生在实际问题中应用数学、统计学和计算方法能力的比赛。数学建模是将现实世界的问题转化为数学模型,然后...

    气球呯呯呯 html5练练看源码

    【气球呯呯呯 HTML5练练看源码】是一款基于HTML5技术开发的游戏,旨在提供一个轻松有趣的编程练习平台。HTML5是一种在网页上创建动态内容的标记语言,它允许开发者构建交互性更强、功能更丰富的网页应用,而无需依赖...

    acm题库及答案初学者可以自己先练练,看看答案,还有一些相关acm题的知识,解压后是一本pdf书,我个人感觉蛮好的

    美国计算机协会(Association for Computing Machinery , 简称ACM)是一个世界性的计算机从业员专业组织,创立于1947年,是世界上第一个科学性及教育性计算机学会。ACM每年都出版大量计算机科学的专门期刊,并就每项...

    五大模型(三角型等积变形、共角模型.doc

    【练练 20】同理,三角形面积的和与另一个三角形面积的关系。 【练练 21】平行线切割平行四边形,面积差值问题。 【练练 22】中点性质和三角形面积计算。 【练练 23】平行四边形的两种高度对应不同的底,需要通过...

Global site tag (gtag.js) - Google Analytics