LeetCode.884-两句话中不常见的单词(Uncommon Words from Two Sentences)
这是悦乐书的第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<String> result = new ArrayList<String>();
Map<String, Integer> map = new HashMap<String, Integer>();
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<String> result = new ArrayList<String>();
Map<String, Integer> map = new HashMap<String, Integer>();
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+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode.884-两句话中不常见的单词(Uncommon Words from Two Sentences)的更多相关文章
- leetcode 884. 两句话中的不常见单词 (python)
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- 领扣(LeetCode)两句话中的不常见单词 个人题解
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- leetcode-解题记录 884. 两句话中的不常见单词
题目 给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不 ...
- Leetcode884.Uncommon Words from Two Sentences两句话中的不常见单词
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- LeetCode 884. Uncommon Words from Two Sentences (两句话中的不常见单词)
题目标签:HashMap 题目给了我们两个句子,让我们找出不常见单词,只出现过一次的单词就是不常见单词. 把A 和 B 里的word 都存入 map,记录它们出现的次数.之后遍历map,把只出现过一次 ...
- [Swift]LeetCode884. 两句话中的不常见单词 | Uncommon Words from Two Sentences
We are given two sentences A and B. (A sentence is a string of space separated words. Each word co ...
- leetcode-884两句话中的不常见单词
''' 给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有 ...
- 神级程序员通过两句话带你完全掌握Python最难知识点——元类!
千万不要被所谓"元类是99%的python程序员不会用到的特性"这类的说辞吓住.因为 每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生 ...
- 两句话掌握python最难知识点——元类
千万不要被所谓“元类是99%的python程序员不会用到的特性”这类的说辞吓住.因为每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生万物 我是谁?我从哪来 ...
随机推荐
- 原生Ajax的使用——含开放API接口
看了两天关于Ajax的使用,总感觉云里雾里的. 故在此总结梳理一下,如果疏漏错误还请纠正支出. Ajax能够在向服务器请求额外的数据时,不必重新加载/卸载整个页面,实现一小块区域性的刷新,也是常说的异 ...
- cvpr2016论文
http://openaccess.thecvf.com/ICCV2017.py http://openaccess.thecvf.com/CVPR2017.py http://www.cv-foun ...
- 【剑指Offer】65、矩阵中的路径
题目描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经 ...
- python解析邮件的时候编码问题
import sys import base64 import os import re s1 = '"=?UTF-8?B?56mG6Zi/5rWpKOWnnOW8iyk=?=" ...
- ZOJ 3180 Number Game(模拟,倒推)
题目 思路: 先倒推!到最后第二步,然后: 初始状态不一定满足这个状态.所以我们要先从初始状态构造出它出发的三种状态.那这三种状态跟倒推得到的状态比较即可. #include<stdio.h&g ...
- DNS详细解析过程【转】
转自:http://blog.csdn.net/crazw/article/details/8986504 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baid ...
- 学习MPI并行编程记录
简单的MPI程序示例 首先,我们来看一个简单的MPI程序实例.如同我们学习各种语言的第一个程序一样,对于MPI的第一个程序同样是"Hello Word". /* Case 1 he ...
- JLOI2018 记
2018JL省选记 又是一年省选.今年的我,依然好菜啊... [Day 0] 呼...好紧张,明天就省选了.下周就有学长退役了吧,机房又该恢复冷清了吧.只剩下为数不多的几个i7接送着来来往往的OIer ...
- 完全卸载VS2015的方法
解压ISO文件夹,到根目录下运行命令行: vs_enterprise.exe /uninstall /force 注意:如果安装了Update 3时,就解压最新的ISO,不需要旧的. 卸载完成之后,删 ...
- React Native Mac配置指南
步骤 http://facebook.github.io/react-native/docs/getting-started.html#content 依照React Native官网步骤一步步安装, ...