比如输入两个字符串:
前一个字符串是:ATTTTCGGGCGGGG
第二个字符串是GCGGGGACGTCGAACG这个GCGGGG就是他们的重复部分。我需要解决的的重复部分就是只有这一种情况。
如何将这个重复部分找出来,然后将两个字符串合并,不要重复,只出现一次。
结果输出为ATTTTCGGGCGGGGACGTCGAACG谢谢。

解决方案 »

  1.   

    你这里面不是只有一个重复的地方.
    如:
    前一个字符串是:ATTTTCGGGCGGGG 
    第二个字符串是GCGGGGACGTCGAACG 随便就能找出来.
    是不是这写也要把这写重复找出来呢.
    不知道你要的是什么效果.
    是固定长度的字符不能重复,还是怎么样的.
      

  2.   

    假定:字串A是第一个字串,字串B是第二个字串
    因为LZ要求A字串结尾部分和B字串开头部分重复,并合并!
    先循环字串A,判断a[i]==b[0]
    如果等于,内循环j=i; j<a.length; j++
    判断a[i+j]==b[j];如果不相等,就break;
    知道字串A结束后一直相等,那么就是重复部分了!
      

  3.   


    /**
     * 两个字串相同部分,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;
    }
    }
    }
    }
    }
      

  4.   

    我需要带有输入框的code,谢谢大家了
      

  5.   

    JOptionPane.showInputDialog("");这个方法就可以获取输入框输入的字串!package com.test;import javax.swing.JOptionPane;public class StringRepeat {

    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));
    }
    }
      

  6.   

    System.out.println(new StringRepeat().repeat(a, b));
    是打印在控制台,如果要弹出框显示字符串,可以用下面方法:
    JOptionPane.showMessageDialog(null, new StringRepeat().repeat(a, b));
      

  7.   

    菜鸟来了哦~~~~~~
    用正则表达式的:-)
    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()));
    }
    }
    }