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

处理字符串的问题?

处理字符串的问题?

胡说叔叔 2019-03-12 13:15:54
比如我现在想处理两个字符串,String a = "北大再现一个人的毕业照你好哈哦额的了呢";String b = "北大现百度一个阿里人毕照哈哦腾讯的了呢";以a为基准,a里面包含的字,如果在b里面也有,就把它提取出来,也就是最后可以得到的字符串应该是"北大现一个人毕业照哈哦的了呢"。这样各位有什么好的思路,最好算法速率快一点,时间上快,空间上到随意。如果时间上是在快不起来,也说说思路。我现在的思路是很蠢的,把字符串分成一个字的N段,然后两个for嵌套,相同就拿出来,实在是太蠢了。
查看完整描述

5 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

我想到一个办法,但应该不是最优,就当给题主一个参考吧。


String a = "北大再现一个人的毕业照你好哈哦额的了呢";

String b = "北大现百度一个阿里人毕照哈哦腾讯的了呢";


Set set = new HashSet();

for (int i = 0; i < b.length(); i++) {

    set.add(String.valueOf(b.charAt(i)));

}


StringBuilder result = new StringBuilder();

for (int i = 0; i < a.length(); i++) {

    String str = String.valueOf(a.charAt(i));

    if(set.contains(str)){

        result.append(str);

    }

}


System.out.println(result);


查看完整回答
反对 回复 2019-04-19
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

思路很简单:利用hash。

准备一个hash表,先把a遍历一遍,分别以a中的每个字符作为key,这些key对应的value全置为true;然后遍历b,分别以b中的每个字符作为key,发现key对应的value为true,则说明这个字符既在a中又在b中。


查看完整回答
反对 回复 2019-04-19
  • 5 回答
  • 0 关注
  • 435 浏览

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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