为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

www说 2022-05-12 16:33:54
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 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

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


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


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

                break;

            }

        }

    }

}


查看完整回答
反对 回复 2022-05-12
?
慕容3067478

TA贡献1773条经验 获得超3个赞

如果您不想重复,请使用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,


查看完整回答
反对 回复 2022-05-12
?
慕沐林林

TA贡献2016条经验 获得超9个赞

试试这个:


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

    }

}

只需更新您自己的代码。

在这里维护一个dumplicates字符串dstr,常用字符将添加到其中。

当其中已经有一个字母时,将跳过比较continue。

indexOf将返回字母在字符串中的位置,或者-1如果不在其中。


查看完整回答
反对 回复 2022-05-12
  • 3 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号