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。
答案 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,