比如输入两个字符串:
前一个字符串是:ATTTTCGGGCGGGG
第二个字符串是GCGGGGACGTCGAACG这个GCGGGG就是他们的重复部分。我需要解决的的重复部分就是只有这一种情况。
如何将这个重复部分找出来,然后将两个字符串合并,不要重复,只出现一次。
结果输出为ATTTTCGGGCGGGGACGTCGAACG谢谢。
前一个字符串是:ATTTTCGGGCGGGG
第二个字符串是GCGGGGACGTCGAACG这个GCGGGG就是他们的重复部分。我需要解决的的重复部分就是只有这一种情况。
如何将这个重复部分找出来,然后将两个字符串合并,不要重复,只出现一次。
结果输出为ATTTTCGGGCGGGGACGTCGAACG谢谢。
如:
前一个字符串是:ATTTTCGGGCGGGG
第二个字符串是GCGGGGACGTCGAACG 随便就能找出来.
是不是这写也要把这写重复找出来呢.
不知道你要的是什么效果.
是固定长度的字符不能重复,还是怎么样的.
因为LZ要求A字串结尾部分和B字串开头部分重复,并合并!
先循环字串A,判断a[i]==b[0]
如果等于,内循环j=i; j<a.length; j++
判断a[i+j]==b[j];如果不相等,就break;
知道字串A结束后一直相等,那么就是重复部分了!
/**
* 两个字串相同部分,A字串尾部和B字串开始相同部分不重复合并
*/
package com.test;public class StringRepeat {
public static void main(String[] args){
String a = "ATTTTCGGGCGGGG";
String b = "GCGGGGACGTCGAACG";
String c = "";
char[] aa = a.toCharArray();
char[] bb = b.toCharArray();
int i,j;
for (i =0; i<aa.length; i++){
if (aa[i] == bb[0]){ //判断aa中是否有和bb第一个字母相等的
for (j=i+1; j<aa.length; j++){ //从aa中和bb第一个字母相等开始下一个判断
if (aa[j] != bb[j-i]){
break;
}
}
if (j == aa.length){ //判断相同的字符串是否位于aa的尾部,是则合并aa和bb
for (int k = 0; k<i; k++){
c += aa[k];
}
for (int k = 0; k<bb.length; k++){
c += bb[k];
}
System.out.println(c);//此处打印出合并后的字串
break;
}
}
}
}
}
public String repeat(String a, String b){
String c = "";
char[] aa = a.toCharArray();
char[] bb = b.toCharArray();
int i,j;
for (i =0; i<aa.length; i++){
if (aa[i] == bb[0]){ //判断aa中是否有和bb第一个字母相等的
for (j=i+1; j<aa.length; j++){ //从aa中和bb第一个字母相等开始下一个判断
if (aa[j] != bb[j-i]){
break;
}
}
if (j == aa.length){ //判断相同的字符串是否位于aa的尾部,是则合并aa和bb
for (int k = 0; k<i; k++){
c += aa[k];
}
for (int k = 0; k<bb.length; k++){
c += bb[k];
}
System.out.println(c);
return c;
}
}
}
return null;
}
public static void main(String[] args){
String a = JOptionPane.showInputDialog("输入a");
String b = JOptionPane.showInputDialog("输入b");
System.out.println(new StringRepeat().repeat(a, b));
}
}
是打印在控制台,如果要弹出框显示字符串,可以用下面方法:
JOptionPane.showMessageDialog(null, new StringRepeat().repeat(a, b));
用正则表达式的:-)
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Child {
public static void main(String[] args) {
String s1 = "ATTTTCGGGCGGGG";
String s2 = "GCGGGGACGTCGAACG";
Pattern p = Pattern.compile(s2);
Matcher m = p.matcher(s1);
String s = new String(s2);
for(int i = s.length()-1;i>=0;i++){
m.usePattern(Pattern.compile(s+"\\Z"));
m.reset(s1);
if(m.find()){
break;
}
s = s.substring(0, s.length()-1);
}
if(s.length() == 0){
System.out.println("没有重复部分");
}else{
System.out.println("重复部分:"+s);
System.out.println("字符串合并结果:"+s1+s2.substring(s.length()));
}
}
}