缩小字符串之间的共同元素

时间:2019-01-20 02:53:25

标签: java

public class numerodetel {**strong text**    
static void commun(String tel1, String tel2){
    for(int i=0;i<tel1.length();i++){
        for(int j=0;j<tel2.length();j++){
            if(tel1.charAt(i)==tel2.charAt(j))
                System.out.printf(" %c,", tel1.charAt(i));

        }

    }
}
public static void main(String[] args){
        String telUDM = "5143436111", telJean = "4501897654";

        commun(telUDM, telJean);
    }
}

该代码有效,我能够找到两个电话号码之间的公用号码。但是,是否有一种简便的方法可以使一旦在两者之间检测到一个公共数字,它就不会再次出现?在这种情况下,它将是5、1、4、6。

3 个答案:

答案 0 :(得分:1)

首先,您可以使用类似此处的建议内容,从字符串中删除重复的数字:

Removing duplicates from a String in Java

然后,您可以使用break语句在每次找到匹配项时离开内部循环:

$( ".linkbestia" ).each(function() {

lnk = $(this).text();
enlace= $(this).attr("href");
espacios=lnk.replace(" ","_");
maslimpio=espacios.replace("'","%27");
muchomaslimpio=maslimpio.replace("(","%28");
muchomuchomaslimpio=maslimpio.replace(")","%29");
nuevoenlace=$(this).attr("href",enlace+muchomuchomaslimpio);

});

答案 1 :(得分:0)

尝试一下:

public class numerodetel {**strong text**    
static void commun(String tel1, String tel2){
    dstr="";
    for(int i=0;i<tel1.length();i++){
        if (dstr.indexOf(tel1.charAt(i)) >= 0)
            continue;
        for(int j=0;j<tel2.length();j++){
            if (tel1.charAt(i)==tel2.charAt(j)) {
                dstr += tel1.charAt(i);
                System.out.printf(" %c,", tel1.charAt(i));
            }
        }

    }
}
public static void main(String[] args){
        String telUDM = "5143436111", telJean = "4501897654";

        commun(telUDM, telJean);
    }
}

只需更新您自己的代码即可。
这是为了在此处维护一个转储字符串dstr,公共字符将添加到其中。
如果已有字母,则跳过continue进行比较。
indexOf将返回字母在字符串中的位置,如果没有,则返回-1

答案 2 :(得分:0)

如果您不想重复,请使用Set

与您的代码的 O(n * m)相比,这也会执行更好的 O(n + m)

static void commun(String tel1, String tel2) {
    Set<Integer> chars1 = tel1.chars().boxed().collect(Collectors.toSet());
    Set<Integer> chars2 = tel2.chars().boxed().collect(Collectors.toSet());
    chars1.retainAll(chars2);
    for (int ch : chars1)
        System.out.printf(" %c,", (char) ch);
}

测试

commun("5143436111", "4501897654");

输出

 1, 4, 5, 6,