博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode.884-两句话中不常见的单词(Uncommon Words from Two Sentences)
阅读量:6651 次
发布时间:2019-06-25

本文共 2023 字,大约阅读时间需要 6 分钟。

这是悦乐书的第338次更新,第362篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第207题(顺位题号是884)。我们给出了两个句子A和B。(一个句子是一串空格分隔的单词。每个单词只由小写字母组成。)如果一个单词在其中一个句子中只显示一次,并且不出现在另一个句子中,则该单词不常见。返回所有不常见单词的列表。你可以按任何顺序返回列表。例如:

输入:A = "this apple is sweet", B = "this apple is sour"

输出:["sweet","sour"]

输入:A = "apple apple", B = "banana"

输出:["banana"]

注意

  • 0 <= A.length <= 200

  • 0 <= B.length <= 200

  • A和B都只包含空格和小写字母。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

题目的要求有两点:

  • 出现两次及以上的单词不要,无论在A中还是在B中。

  • A中单词不能出现在B中,B中单词不能出现在A中。

换一种方式来讲,最后的结果字符串数组只要出现一次的单词。所以,我们可以使用HashMap,以每个单词为key,以其出现次数为value,将字符串A、B按照空格拆分为字符串数组,遍历其中的元素,存入HashMap中,接着遍历HashMap,将value值为1的key元素添加进结果数组中,最后返回结果数组。

public String[] uncommonFromSentences(String A, String B) {    List
result = new ArrayList
(); Map
map = new HashMap
(); String[] arr = A.split(" "); for (String str : arr) { map.put(str, map.getOrDefault(str, 0)+1); } String[] arr2 = B.split(" "); for (String str : arr2) { map.put(str, map.getOrDefault(str, 0)+1); } for (String key : map.keySet()) { if (map.get(key) == 1) { result.add(key); } } return result.toArray(new String[result.size()]);}

03 第二种解法

我们也可以将字符串A和B连接在一起,只使用一个for循环来处理单词,其他思路不变。

public String[] uncommonFromSentences2(String A, String B) {    List
result = new ArrayList
(); Map
map = new HashMap
(); String[] arr = (A+" "+B).split(" "); for (String str : arr) { if (!str.isEmpty()) { map.put(str, map.getOrDefault(str, 0)+1); } } for (String key : map.keySet()) { if (map.get(key) == 1) { result.add(key); } } return result.toArray(new String[result.size()]);}

04 小结

算法专题目前已连续日更超过六个月,算法题文章207+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

转载于:https://www.cnblogs.com/xiaochuan94/p/10947527.html

你可能感兴趣的文章
那些强悍的PHP一句话后门
查看>>
C# 文件下载 : WebClient
查看>>
JavaScript Ajax之美
查看>>
oracle linux 启动
查看>>
C# 一个多层循环中,break一次能跳出几个循环?
查看>>
脚本大全
查看>>
PostgreSQL 允许远程访问设置方法
查看>>
eclipse中project->clean的作用是什么
查看>>
【转】bash 参数展开(Parameter Expansion)
查看>>
CSS之div和span标签
查看>>
攻入Javascript,究竟什么是AJAX
查看>>
ASP.NET MVC:通过FileResult向浏览器发送文件
查看>>
Mac下关闭Sublime Text 3的更新检查
查看>>
Linux 块I/O子系统
查看>>
$ -----JavaScript 中美元符号 $ 的作用
查看>>
2017年网站安全狗绕过WebShell上传拦截的新姿势
查看>>
利用递归将数组转码
查看>>
使用VPD解决EBS中信息屏蔽问题
查看>>
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法...
查看>>
SolidEdge 如何绘制零件图的剖视图
查看>>