Python描述 LeetCode 6094. 公司命名 大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、
Python描述 LeetCode 6094. 公司命名
大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~
如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.
本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。
题目
给你一个字符串数组 ideas 表示在公司命名过程中使用的名字列表。公司命名流程如下:
返回 不同 且有效的公司名字的数目。
示例 1:
输入:ideas = ["coffee","donuts","time","toffee"]输出:6
解释:下面列出一些有效的选择方案:
- ("coffee", "donuts"):对应的公司名字是 "doffee conuts" 。
- ("donuts", "coffee"):对应的公司名字是 "conuts doffee" 。
- ("donuts", "time"):对应的公司名字是 "tonuts dime" 。
- ("donuts", "toffee"):对应的公司名字是 "tonuts doffee" 。
- ("time", "donuts"):对应的公司名字是 "dime tonuts" 。
- ("toffee", "donuts"):对应的公司名字是 "doffee tonuts" 。
因此,总共有 6 个不同的公司名字。
下面列出一些无效的选择方案:
- ("coffee", "time"):在原数组中存在交换后形成的名字 "toffee" 。
- ("time", "toffee"):在原数组中存在交换后形成的两个名字。
- ("coffee", "toffee"):在原数组中存在交换后形成的两个名字。
示例 2:
输入:ideas = ["lack","back"]输出:0
解释:不存在有效的选择方案。因此,返回 0 。
提示:
- 2 <= ideas.length <= 5 * 104
- 1 <= ideas[i].length <= 10
- ideas[i] 由小写英文字母组成
- ideas 中的所有字符串互不相同
Python描述
class Solution:def distinctNames(self, ideas: List[str]) -> int:
# f[x][y]记录可以将首字母从x换到y且不在ideas中的数量
f = [[0 for _ in range(26) ] for __ in range(26)]
hd = {}
for item in ideas:
hd[item] = 1
for item in ideas:
x = ord(item[0]) - ord('a')
for y in range(26):
ns = chr(y+ord('a')) + item[1:]
if hd.get(ns,0) == 0:
f[x][y] += 1
res = 0
for item in ideas:
y = ord(item[0]) - ord('a')
# 加上可以换到y的数量
for x in range(26):
ns = chr(x+ord('a')) + item[1:]
if hd.get(ns,0) == 0:
res += f[x][y]
return