猿问

处理字符串的问题?

比如我现在想处理两个字符串,


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

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

以a为基准,a里面包含的字,如果在b里面也有,就把它提取出来,也就是最后可以得到的字符串应该是"北大现一个人毕业照哈哦的了呢"。

这样各位有什么好的思路,最好算法速率快一点,时间上快,空间上到随意。

如果时间上是在快不起来,也说说思路。


我现在的思路是很蠢的,把字符串分成一个字的N段,然后两个for嵌套,相同就拿出来,实在是太蠢了。


胡说叔叔
浏览 436回答 5
5回答

小怪兽爱吃肉

我想到一个办法,但应该不是最优,就当给题主一个参考吧。String a = "北大再现一个人的毕业照你好哈哦额的了呢";String b = "北大现百度一个阿里人毕照哈哦腾讯的了呢";Set set = new HashSet();for (int i = 0; i < b.length(); i++) {&nbsp; &nbsp; set.add(String.valueOf(b.charAt(i)));}StringBuilder result = new StringBuilder();for (int i = 0; i < a.length(); i++) {&nbsp; &nbsp; String str = String.valueOf(a.charAt(i));&nbsp; &nbsp; if(set.contains(str)){&nbsp; &nbsp; &nbsp; &nbsp; result.append(str);&nbsp; &nbsp; }}System.out.println(result);

慕桂英4014372

思路很简单:利用hash。准备一个hash表,先把a遍历一遍,分别以a中的每个字符作为key,这些key对应的value全置为true;然后遍历b,分别以b中的每个字符作为key,发现key对应的value为true,则说明这个字符既在a中又在b中。
随时随地看视频慕课网APP

相关分类

Java
我要回答