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

找出两个字符串中,连续相同的字符个数最少为min的字符串

阅读更多

找出两个字符串中,连续相同的字符个数最少为min的字符串

(具体涉及一些不能公布的,还是不说了,有更好的算法,请拍砖讨论)

主要是这个函数--Compare2Str(String str1, String str2, int min),其他不用管

-----------------------------似乎还有点问题!等待明天继续调试


package com.ssj.test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class CompareString {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String contig1 = "AAGAAACGTATCCGTGTTTACATGGATGGATGTTTCGATCTCATGCATTATGGACACGCA"+
						"AATGCTTTAAGACAAGCTAAAGCTTTAGGAGATGAACTAGTAGTTGGAATTGTAAGTGAT"
					+"GAAGAAATCATCAAGAACAAAGGTCCTCCTGTTTTATCAATGGAGGAAAGATTGGCACTT"
					+"GTTAGTGGATTGAAGTGGGTTGATGAAGTTATTGCTAATGCACCATATGCTATTACCGAA"
					+"GACTTCATGAACAGTCTATTTAAAGAACATAAGATTGATTATATCATTCATGGAGATGAT"
					+"CCTTGTTTGCTTCCTGATGGAAGTGATGCATATGCTTTAGCAAAAAAAGTCGGTCGTTAC"
					+"AAGCAAATTAAACGTACAGAAGGCGTATCAAGCACCGACATTGTAGGAAGGATACTTGCA"
					+"TCCATGGAAGATAAAGAAGTATGTGAAGTTAATGGAGAAAGTAATGAAATGAATAAAAAT"
					+"TTGGACAGCCATTTCAAGGCCAAACATGCCTCTAATTTTTTGCCTACATCAAGAAGAATT"
					+"GTTCAGTTT";

		String EL372564 = "AAGAAACGTATCCGTGTGTACATGGATGGATGTTTTGATCTCATGCATTATGGTCACGCAAATGCTTTAAGACAAGCTAAAGCTTTAGGAGACGAATTAGTGGTTGGAATTGTAAGTGATGAAGAAATCATCAAGAACAAAGGTCCTCCTGTTTTATCAATGGAGGAAAGATTGGCACTTGTTAGTGGATTGAAGTGGGTTGATGAAGTTATTGCTAATGCACCTTATGCTATTACTGAAGACTTCATGAACAGTCTATTTAAAGAACATAAGATTGATTATATCATTCATGGAGATGATCCTTGTTTGCTTCCTGATGGAAGTGATGCATATGCTTTAGCAAAAAAA";
		String EL371249 = "AAGAAACGTATCCGTGTGTACATGGATGGATGTTTTGATCTCATGCATTATGGTCACGCAAATGCTTTAAGACAAGCTAAAGCTTTAGGAGACGAATTAGTGGTTGGAATTGTAAGTGATGAAGAAATCGTCAAGAACAAAGGTCCTCCTGTTTTATCAATGGAGGAAAGATTGGCACTTGTTAGTGGATTGAAGTGGGTTGATGAAGTTATTGCTAATGCACCTTATGCTATTACTGAAGACTTCATGAACAGTCTATTTAAAGAACATAAGATTGATTATATCATTCATGGAGATGATCCTTGTTTGCTTCCTGATGGAAGTGATGCATATGCTTTAGCAAAAAAA";
		String EL347301 = "AAGAAACGTATCCGTGTGTACATGGATGGATGTTTTGATCTCATGCATTATGGTCACGCAAATGCTTTAAGACAAGCTAAAGCTTTAGGAGACGAATTAGTGGTTGGAATTGTAAGTGATGAAGAAATCATCAAGAACAAAGGTCCTCCTGTTTTATCAATGGAGGAAAGATTGGCACTTGTTAGTGGATTGAAGTGGGTTGATGAAGTTATTGCTAATGCACCTTATGCTATTACTGAAGACTTCATGAACAGTCTATTTAAAGAACATAAGATTGATTATATCATTCATGGAGATGATCCTTGTTTGCTTCCTGATGGAAGTGATGCATATGCTTTAGCAAAAAAAGTTGGTCGTTACAAACAAATTAAACGTACAGAAGGCGTATCAAGCACCGACATTGTAGGAAGGATACTTGCATCCATGGAAGAT";
		String EH685069 = "AAGAAACGTATCCGTGTTTACATGGATGGATGTTTCGATCTCATGCATTATGGACACGCAAATGCTTTAAGACAAGCTAAAGCTTTAGGAGATGAACTAGTAGTTGGAATTGTAAGTGATGAAGAAATCATCAAGAACAAAGGTCCTCCTGTTTTATCAATGGAGGAAACATTGGCACTTGTTAGTGGATTGAAGTGGGTTGATGAAGTTATTGCTAATGCACCATATGCTATTACCGAAGACTTCATGAACAGTCTATTTAAAGAACATAAGATTGATTATATCATTCATGGAGATGATCCTTGTCTGCTTCCTGATGGAAGTGATGCATATGCTTTAGCAAAAAAAGTCGGTCGTTACAAGCAAATTAAACGTACAGAAAGCGTATCAAGCACCGACATTGTAGGAAGGGTACTTGCATCCATGGAAGATAAAGAACTATGTGAA";
		
		//		String str3 = "AAGAAACGTATCCGTGT--TTACATGGATGGATGTTTCGATCTCATGCATTATGGACACGCAAATGC";
		System.out.println("--------contig1 and EL372564---------");
		CompareTest(contig1, EL372564);
		System.out.println("\n--------EL371249 and EL372564---------");
		CompareTest(EL371249, EL372564);
		
		System.out.println("\n--------EL372564 and EL347301---------");
		CompareTest(EL372564, EL347301);

		System.out.println("\n--------contig1 and EH685069---------");
		CompareTest(contig1, EH685069);
		
		//System.out.println("AAGAAACGTATCCGTGTTTACATGGATGGATGTTTCGATCTCATGCATTATGGACACGCA".length());
		String contig =  "TNNNNNNNNNNNNNNNNNNNNNACTTATGCACAGACCAACCTGAATGTTGACGTGCTCCA"
						+"CATTTCCTACCTATCTTACACTTACCATAATGGGTGGAATATGTTCTTTCTAAAGTATTT"
						+"TCATTAGGTTTTAAAGCCCACATGCATCTTAAAGAAAATGTAAACCACATGTTTGACATT"
						+"CATTTACACTTAACTACTTTTTTTCCTATAAAAAAGAAAAATGTAAATGTGATGTTCAAA"
						+"TTGCCAATTTGAGAGCCATATTGTGTACATTAAAATTAGTGGCATTTCAAGTCATTTTTC"
						+"TTTCCATGGAATTATTACAAAGGAAAATGCCTTTGAACAATAGAAAGTCATGGATCTATC"
						+"CCAACTCTAAATAAGTGGTATTTTAGTGGGTTTTAAACATGGTTAAAGTTCTTATCCCAG"
						+"AGCTCTAAACCACAAAGCCCAGTTATATTGGTTCTCTTCATCTGTCAGAGGTAAAAACAG"
						+"AGGGTATTGATCTTTTATTTATCTTTGAAGCTTTAAAGTATAATTAGTTAA"+       "AGAAAAAGT"
						+"TTCTGTACTTAGAACATCTCGGTTCTAGCCTTGACTTATGCTAGAAACAAGGATTATATC"
						+"TGTATTAGTCTGGTCATACACTGTTATAAAGAACTACCTGAGACTGGATAATTTATAAAG"
						+"AAAAGAGGTTTAATTAGCTTATGGTTCCACAGGCTGTACAGGAAGCATGCCTGGGGAGGC"
						+"CTTAAGAAACTTACAATCATGGCAGAATGTGAAGAGGAAGAAAGCATGTTTTCTCATGGC"
						+"CAGAGCAAGAGGAAGAGAGAGAAGGGGGAGGTGCTACTCCACTTTTAANGCAACCCAGAT"
						+"CTCATGAGAACTCCACTCCATTGTGCACAAAAATGGCCAAGGGCGGAAATTTCCACCCTC"
						+"GTGATCNNCAATCACCTCCCACCAGGCCCCTCCTCTATTATTGGGGATTACAATTTGGCA"
						+"TGAGATCTGGGTGAGGACACAAATCCAAACCATATCAACATCCCTACTCTACTTACTTTA"
						+"TAAACTTGGTGGGAGAATCAAGTGGCATGGGGATGAAAGTCAATGGATACCGGAAAGAGG"
						+"ACTAATCCATGGCTGAAAGGGGGGTATCCAATTACACCAAGGCTTTACAGGGGAAATATA"
						+"CAGAGGTTAAAACAAAGGTTTGGTCTTTCCAAAA";
		String ENV1180 = "TNNNNNNNNNNNNNNNNNNNNNACTTATGCACAGACCAACCTGAATGTTGACGTGCTCCA"
						+"CATTTCCTACCTATCTTACACTTACCATAATGGGTGGAATATGTTCTTTCTAAAGTATTT"
						+"TCATTAGGTTTTAAAGCCCACATGCATCTTAAAGAAAATGTAAACCACATGTTTGACATT"
						+"CATTTACACTTAACTACTTTTTTTCCTATAAAAAAGAAAAATGTAAATGTGATGTTCAAA"
						+"TTGCCAATTTGAGAGCCATATTGTGTACATTAAAATTAGTGGCATTTCAAGTCATTTTTC"
						+"TTTCCATGGAATTATTACAAAGGAAAATGCCTTTGAACAATAGAAAGTCATGGATCTATC"
						+"CCAACTCTAAATAAGTGGTATTTTAGTGGGTTTTAAACATGGTTAAAGTTCTTATCCCAG"
						+"AGCTCTAAACCACAAAGCCCAGTTATATTGGTTCTCTTCATCTGTCAGAGGTAAAAACAG"
						+"AGGGTATTGATCTTTTATTTATCTTTGAAGCTTTAAAGTATAATTAGTTAA"   +    "GGAAAAGTT"
						+"CTGTACTTAGAACATCTCGGTTCTAGCCTTGACTTATGCTAGAAACAAGGATTATATCTG"
						+"TATTAGTCTGGTCTACACTGTTATAAAGAACTACCTG";
		String ENV446 =  "CCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTATCCAACTCTAAATAAGTGGTATTT"
						+"AGTGGGTTTTAAACATGGTTAAAGTTCTTATCCCAGAGCTCTAAACCACAAAGCCCAGTT"
						+"ATATTTGTTCTCTTCATCTGTCAGAGGTAAAAACAGAGGGTATTGATCTTTTATTTATCT"
						+"TTGAAGCTTTAAAGTATAATTTGTTCAAGGAAAAGTTTCTGTACTTAGAACATCTCGGTT"
						+"CTAGCCTTGACTTATGCTAGAAACAAGGATTATATCTGTATTAGTCTGTTCATACACTGT"
						+"TATAAAGAACTACCTGAGACTGGATAATTTATAAAGAAAAGAGGTTTAATTAGCTTATGG"
						+"TTCCACAGGCTGTACAGGAAGCATGCCTGGGGAGGCCTTAAGAAACTTACAATCATGGCA"
						+"GAATGTGAAGAGGAAGAAAGCATGTTTTCTCATGGCCAGAGCAAGAGGAAGAGAGAGAAG"
						+"GGGGAGGTGCTACTCCACTTTTAANGCAACCCAGATCTCATGAGAACTCCACTCCATTGT"
						+"GCACAAAAATGGCCAAGGGCGGAAATTTCCACCCTCGTGATCNNCAATCACCTCCCACCA"
						+"GGCCCCTCCTCTATTATTGGGGATTACAATTTGGCATGAGATCTGGGTGAGGACACAAAT"
						+"CCAAACCATATCAACATCCCTACTCTACTTACTTTATAAACTTGGTGGGAGAATCAAGTG"
						+"GCATGGGGATGAAAGTCAATGGATACCGGAAAGAGGACTAATCCATGGCTGAAAGGGGGG"
						+"TATCCAATTACACCAAGGCTTTACAGGGGAAATATACAGAGGTTAAAACAAAGGTTTGGT"
						+"CTTTCCAAAA";
		System.out.println("\n--------contig and ENV1180---------");
		CompareTest(ENV1180, contig);
		
		String str = "";
//		Compare2Str("abcdbce","cbce",2);
		Compare2Str(ENV446,ENV1180,20);
//		System.out.println(ENV446.indexOf());
	}

	public static void CompareTest(String str1, String str2){
		
		int len1 = str1.length();
		int len2= str2.length();
		StringBuffer strb = new StringBuffer();
		int k = (len1>len2 ? len2 : len1);
		//System.out.println("k = "+k);
//		int num = 0;
		for (int i = 0; i<k; i++){
			if(str1.charAt(i) == str2.charAt(i)){
				strb.append(str1.charAt(i));
			}
			else {
//				num = i;
				break;
			}
		}
		System.out.println("the num of the same char :  "+strb.length());
		System.out.println("the same String is : " +strb.toString());
//		System.out.println("the arrays1 is : " +strb.toString());
//		if(strb.toString().equals(str1.substring(0,num))){
//			System.out.println("Very Good!!!");
//		}
		
	}
	
	public static void Compare2Str(String str1, String str2, int min){
  //找出两个字符串中,连续相同的字符个数最少为min的字符串
  int len1 = str1.length();
  int len2= str2.length();
  StringBuffer strb = new StringBuffer();
  String maxStr, minStr;
  int minLen = 0;
  int maxLen = 0;
  if(len1 > len2){
   maxLen = len1;
   minLen = len2;
   maxStr = str1;
   minStr = str2;
  }
  else{
   maxLen = len2;
   minLen = len1;
   maxStr = str2;
   minStr = str1;
  }
  List strList = new ArrayList();
  char c1, c2;
  
  for (int i=0; i<maxLen; i++){
   StringBuffer tempStr = new StringBuffer("");
   c1 = maxStr.charAt(i);
   for(int j=0; j<minLen; j++){
     c2 = minStr.charAt(j);
     while(c1 == c2){
     tempStr.append(c1);
     if(++i<maxLen && ++j<minLen){
      c1 = maxStr.charAt(i);
      c2 = minStr.charAt(j);
     }
     else{
      break;
     }
    }
    if(tempStr.length()>=min){
     strList.add(tempStr);
    }
   }
  }
  Iterator iter = strList.iterator();
  while(iter.hasNext()){
   StringBuffer s = (StringBuffer)iter.next();
   System.out.println("-------" + s.toString());
  }
 }	
	public static void isHaveSubString(String str1, String str2){
		
		if(str1.startsWith(str2)){
			System.out.println("---OK--");
		}
	}
}

 

分享到:
评论

相关推荐

    汇编语言详细介绍.txt

    汇编语言详细介绍.txt

    adb安装工具包及指导

    linux/嵌入式软件开发工具—adb

    python1Python脚本 模拟登录知乎, 爬虫,操作excel,微信公众号,远程开机PGL.zip

    [python1]Python脚本。模拟登录知乎, 爬虫,操作excel,微信公众号,远程开机【PGL】.zip [python1]Python脚本。模拟登录知乎, 爬虫,操作excel,微信公众号,远程开机【PGL】.zip [python1]Python脚本。模拟登录知乎, 爬虫,操作excel,微信公众号,远程开机【PGL】.zip

    为自动脚本量身定做的状态机!像多线程那样去轮询多个状态,不同的状态满足后去执行不同的定时任务。.zip

    为自动脚本量身定做的状态机!像多线程那样去轮询多个状态,不同的状态满足后去执行不同的定时任务。

    Bulk Rename Utility(批量改名) v4.0.0 一款功能强大的批量文件重命名工具.rar

    Bulk Rename utility(文件重命名软件)是一款简便实用的批量文件重命名工具。怎么快速多个文件改名?Bulk Rename utility(文件重命名软件)轻松帮助用户批量修改文件名。该软件具有灵活规则的自动编号文件,而且还能够根据多个灵活的标准快速重命名多个文件。 激活信息(大飞哥软件自习室)在压缩包文档内 软件特色 1、快速重命名多个文件,根据许多灵活的标准。 2、多功能的重命名方式:添加,替换文件名中插入文本。转换的情况下,添加号码。删除或更改文件扩展名。 3、在文件重命名前可以即时预览。 4、重命名的照片EXIF元数据(即“拍摄日期”,“分辨率”等信息嵌入在所有JPG图片文件)重命名你的照片文件名从一个毫无意义的dsc1790.jpg到一个新的文件名。 5、重命名MP3文件的ID3标签(又名MP3 ID3标签重命名)。 6、更改文件的创建日期和修改时间等。

    14.STM32F103C8T6+CUBEMX+循迹模块(定时器计数、测速)

    14.STM32F103C8T6+CUBEMX+循迹模块(定时器计数、测速)

    基于java的电影订票及评论网站的开题报告.docx

    基于java的电影订票及评论网站的开题报告.docx

    基于JavaScript和Vue的绩效考核系统设计源码

    该项目是基于JavaScript和Vue框架的绩效考核系统设计源码,包含168个文件,主要语言为JavaScript。项目文件类型包括41个JavaScript文件、34个map文件、33个CSS样式表、27个Vue组件文件、6个图标文件(ico)、6张图片文件(jpg)、3个HTML模板文件、3张图片文件(png)、2个JSON配置文件、2个Web字体文件(woff2)。此系统适用于需要进行员工绩效考核管理的场景。

    DBVM驱动修改版CE7.5.1版本防检测

    【DBVM驱动修改版CE7.5.1版本防检测】是针对游戏或软件反作弊系统的一种技术解决方案,主要用于提升CE的权限来绕过或屏蔽检测机制。在这个场景中,"DBVM"(指的是“Debugging Virtual Machine”)是一种特殊的虚拟机,被用于调试和分析程序,而CheatEngine(CE)7.5.1则是一个知名的内存修改工具,常被用于游戏修改,以获取竞争优势。 此版本优势: 1、加入DBVM调试可用 2、过滤掉CE方法关键字,防止游戏特征 3、重写CE签名,防特征 4、可过市面上大部分检测

    嵌入式学习之恒温器控制电路.zip

    嵌入式学习,电子信息技术

    “人力资源+大数据+薪酬报告+涨薪调薪”

    人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。

    基于龙格库塔优化算法RUN-BiTCN-BiGRU-Attention的风电预测算法研究Matlab实现.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    安卓开发安卓快速开发库.zip

    【安卓开发】安卓快速开发库.zip 【安卓开发】安卓快速开发库.zip 【安卓开发】安卓快速开发库.zip 【安卓开发】安卓快速开发库.zip

    基于java的人事管理信息系统的开题报告.docx

    基于java的人事管理信息系统的开题报告.docx

    HTML学习课程大纲.pdf

    html 学习的详细课程大纲,每个部分有推荐书籍。

    geopandas安装包(pip install)_geopandas-0.13.0-py3-none-any.zip

    在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。

    基于java的社区文化宣传网站的开题报告.docx

    基于java的社区文化宣传网站的开题报告.docx

    精品推荐科技重塑零售业六大变革趋势报告PPT(完整版)图文.pptx

    【精品推荐】科技重塑零售业六大变革趋势报告PPT(完整版)图文.pptx

    嵌入式学习之声光双控延迟照明灯.zip

    嵌入式学习,电子信息技术

    Java实现的面向对象设计模式示例,创建者、抽象工厂、工厂方法、原型、单例、适配器、桥接、组合、装饰器、备忘录等等.zip

    Java实现的面向对象设计模式示例,创建者、抽象工厂、工厂方法、原型、单例、适配器、桥接、组合、装饰器、备忘录等等.zip

Global site tag (gtag.js) - Google Analytics