atcoder abc 247 unique nickname少儿解法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

atcoder abc 247 unique nickname少儿解法
题目描述:
Alice, Bob, ..., and Zack each got a nickname. These nicknames are "alice", "bob", ..., "zack". No one has a nickname that is a prefix of another person's nickname.
Now, you are given a list of these nicknames in some order, and you need to find out if it's possible to rearrange the list so that all the nicknames for people of the same name (Alice, Bob, ...) are next to each other.
例如:
输入: ["alice", "bob", "alice", "zack", "bob"]
输出: true
解释: 你可以将列表重新排列为["bob", "alice", "bob", "zack", "alice"] 以满足条件。

输入: ["alice", "bob", "zack", "bob", "alice"]
输出: false
解释: 没有方法重新排列列表以满足条件。

解题思路:
我们可以使用一个哈希表来记录每个名字出现的次数,然后遍历一遍列表,将出现的名字与哈希表中对应名字的次数进行比较,如果出现了次数超过1的名字,则说明无法重新排列列表以满足条件,返回false;否则,返回true。

具体实现如下:
python复制代码
def can_arrange(names):
count = {}
for name in names:
count[name] = count.get(name, 0) + 1
for i in range(len(names)):
if names[i] in count and count[names[i]] > 1:
return False
if i > 0and names[i] == names[i-1][1:] and names[i] in count and count[names[i]] > 0:
count[names[i]] -= 1
return True。

相关文档
最新文档