java:获取两个相似字符串的不同部分

时间:2018-03-14 09:07:02

标签: java

获取两个相似字符串的不同部分

示例:

1.String1="bjsqzctjjzxyxgs" String2="bjqzctjjxxzxyxgs" result:String[] s3 = {"s","xx"}
2.String1="bjssdwxxjsyxgs" String2="bjsdwxxjsyxgs" result:String[] s3 = {"s"}
3.String1="bjydcrwljskjyxgs" String2="bjydcrjswlkjyxgs" result:String[] s3 = {"wljs","jswl"}

对于example1,我将字符串设置为char数组,然后我可以得到String" sqzctjj"和" qzctjjxx"但我不能得到结果,例如结果{" s"," xx"}。

我希望有些朋友可以指导我。

感谢

1 个答案:

答案 0 :(得分:0)

public static Map<String,String> getPreviousStrAndLastStr(String shortCompanyName, String shortSelectCompanyName){

    char[] shortCompanyNameCharArray = (shortCompanyName).toCharArray();
    char[] shortSelectCompanyNameCharArray = shortSelectCompanyName.toCharArray();
    Map<String,String> map = new HashMap<String,String>();
    int cirNum = 0;
    int previousDifIndex = 0;
    int lastDifIndex = 0;
    String longSplitStr = "";
    String shortSplitStr = "";

    if(shortCompanyNameCharArray.length>shortSelectCompanyNameCharArray.length){
        cirNum = shortSelectCompanyNameCharArray.length;
        longSplitStr = shortCompanyName;
        shortSplitStr = shortSelectCompanyName;
    }else{
        cirNum = shortCompanyNameCharArray.length;
        longSplitStr = shortSelectCompanyName;
        shortSplitStr = shortCompanyName;
    }
    for(int i=0;i<cirNum;i++){
        if (shortCompanyNameCharArray[i]!=shortSelectCompanyNameCharArray[i]){
            System.out.println(shortCompanyNameCharArray[i]+"--------"+shortSelectCompanyNameCharArray[i]);
            previousDifIndex = i;
            break;
        }
    }
    if(previousDifIndex != 0){
        for(int i=0;i<cirNum;i++){
            if (shortCompanyNameCharArray[shortCompanyNameCharArray.length-i-1]!=shortSelectCompanyNameCharArray[shortSelectCompanyNameCharArray.length-i-1]){
                System.out.println(shortCompanyNameCharArray[shortCompanyNameCharArray.length-i-1]+"--------"+shortSelectCompanyNameCharArray[shortSelectCompanyNameCharArray.length-i-1]);
                lastDifIndex =shortSplitStr.length() - i;
                break;
            }
            if(previousDifIndex==(cirNum-i)){
                lastDifIndex = shortSplitStr.length() - i;;
                break;
            }
        }
    }

    String previousStr = shortSplitStr.substring(0,previousDifIndex);
    String lastStr = shortSplitStr.substring(lastDifIndex,shortSplitStr.length());
    String diffStr1 = longSplitStr.replace(previousStr,"").replace(lastStr,"");
    String diffStr2 = shortSplitStr.replace(previousStr,"").replace(lastStr,"");
    map.put("previousStr",previousStr);
    map.put("lastStr",lastStr);
    map.put("diffStr1",diffStr1);
    map.put("diffStr2",diffStr2);
    map.put("previousDifIndex",previousDifIndex+"");
    map.put("lastDifIndex",lastDifIndex+"");
    return map;
}

输入“bjydcrwljskjyxgs”和“bjqzctjjxxzxyxgs”

输出{diffStr2=sqzctjj, previousStr=bj, diffStr1=qzctjjxx, lastDifIndex=9, lastStr=zxyxgs, previousDifIndex=2}

所以我想让diffStr1 =“qzctjjxx”和diffStr2 =“sqzctjj”如何成为 String [] s3 = {“s”,“xx”}