引用
好像描述的由点问题,再细化点吧!
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;
}
}
分享到:
相关推荐
总之,《练练看小游戏SWING的实现》这篇博客提供了Swing在游戏开发中的实际应用案例,帮助读者了解如何利用Java Swing库来创建一个简单的游戏。通过学习这篇博客,开发者不仅可以提升Swing的使用技能,还能掌握游戏...
在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、游戏以及Web应用等领域。本项目“C#做的练练看”显然旨在帮助...这是一个全面且有趣的练习,对于任何想要提升C#技能的人来说都是一个很好的挑战。
在Java编程领域,"java练练看"这个标题可能指的是一个练习项目或者一系列的练习题,旨在帮助初学者或有经验的开发者通过实践来提升Java编程技能。描述中的"数据库附加上去即可用"暗示了这个项目可能包含了与数据库...
总的来说,《EXCEL练练看游戏》巧妙地将Excel的计算和数据管理能力与VBA的编程能力结合,提供了一个独特的游戏体验。这不仅展示了Excel的多功能性,也为学习和掌握VBA提供了一个生动有趣的实践平台。对于想要提升...
在本项目"Java实现练练看"中,我们主要探讨的是使用Java编程语言来实现一个经典的游戏——连连看。这是一份非常适合初学者提升Java编程技能的实践作业。通过完成这个项目,学习者不仅可以巩固基础的Java编程概念,还...
"vue写的一个滴滴快车练练手"项目,显然旨在帮助开发者通过实践熟悉Vue.js框架,尤其是如何在实际场景中应用Vue来构建类似滴滴快车这样的应用。 在该项目中,我们可以学习到以下Vue.js相关的重要知识点: 1. **Vue...
在IT行业中,"高仿练练开机数据录入"可能指的是一个特定的应用程序或者系统功能,用于模拟实际操作过程中的数据输入。"练练"可能是这个软件或应用的名称,而"高仿"则暗示它旨在提供与真实环境相似的数据录入体验,...
"jQuery练练看实现"项目是一个利用jQuery技术来构建的游戏实践,它可以帮助开发者深入理解jQuery的基本用法和核心功能。下面我们将详细探讨该项目中的关键知识点。 首先,jQuery的引入是项目开始的第一步。通常,...
"练练看源码安卓"是一个专为安卓开发者设计的学习资源,它提供了一个实际的连连看游戏的完整源代码,对于那些希望深入了解安卓应用开发的初学者来说,这是一个宝贵的实践平台。通过研究这个项目的源码,你可以学习到...
标题中的“日语能力测试2级听力练练练1-10期”表明这是一个针对日语能力测试2级,特别是听力部分的练习资源。这个练习材料涵盖了从第一期到第十期的内容,旨在帮助学习者逐步提升听力理解能力,以应对实际的日语能力...
标题中的“练练手,用mina2.0搭建一个nio客户端”表明了本文将探讨如何使用Mina 2.0框架构建一个基于非阻塞I/O(NIO)的客户端应用。Mina是一个开源的Java框架,常用于开发高性能、高并发的网络通信应用,如TCP/IP和...
这个项目的核心是利用编程语言Java实现一个自动化创作宋词的工具,它旨在通过算法和编码技巧,模拟人类创作诗词的过程,使得用户只需短短三秒即可生成一首具有宋词韵味的诗词作品。该项目的开发者可能出于兴趣爱好...
"JavaSE练练看小游戏"是一个练习项目,旨在帮助学习者通过实践来加深对Java语言的理解,特别是JavaSE的基本概念和技术。 在JavaSE中,我们首先会接触到的是基础语法,包括数据类型(如整型、浮点型、字符型和布尔型...
在IT行业中,游戏开发是一项非常热门的技术领域,而Cocos2d-x则是一个广泛使用的开源游戏引擎,尤其适合2D游戏的开发。标题"找相同练练看代码"表明我们将探讨一个基于Cocos2d-x的游戏项目,可能是开发一款类似于“找...
植物大战僵尸 95 版是经典游戏《植物大战僵尸》的一个极具特色的玩家自制版本。在保留原版经典塔防玩法的基础上,进行了诸多的改进与调整,使其难度和趣味性都大大增加。 游戏中,玩家依旧需要在自家的花园里合理...
总的来说,"练练手机客户端 v3.1 安卓版"是一款集运动指导、健康监测、饮食管理、社交互动于一体的健康管理应用,以其丰富的功能和人性化的设计,为用户打造了一个全方位的健康生态系统。无论你是健身爱好者还是希望...
【标题】"2014研究生数学建模题目"涵盖了当年全国研究生数学建模竞赛的主要问题,这是一个旨在锻炼和评估研究生在实际问题中应用数学、统计学和计算方法能力的比赛。数学建模是将现实世界的问题转化为数学模型,然后...
【气球呯呯呯 HTML5练练看源码】是一款基于HTML5技术开发的游戏,旨在提供一个轻松有趣的编程练习平台。HTML5是一种在网页上创建动态内容的标记语言,它允许开发者构建交互性更强、功能更丰富的网页应用,而无需依赖...
美国计算机协会(Association for Computing Machinery , 简称ACM)是一个世界性的计算机从业员专业组织,创立于1947年,是世界上第一个科学性及教育性计算机学会。ACM每年都出版大量计算机科学的专门期刊,并就每项...
【练练 20】同理,三角形面积的和与另一个三角形面积的关系。 【练练 21】平行线切割平行四边形,面积差值问题。 【练练 22】中点性质和三角形面积计算。 【练练 23】平行四边形的两种高度对应不同的底,需要通过...