当前位置 : 主页 > 编程语言 > java >

Python描述 LeetCode 6094. 公司命名

来源:互联网 收集:自由互联 发布时间:2022-10-26
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é),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.

Python描述 LeetCode 6094. 公司命名_公众号

本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。

题目

给你一个字符串数组 ​​ideas​​ 表示在公司命名过程中使用的名字列表。公司命名流程如下:

  • 从​​ideas​​ 中选择 2 个不同名字,称为​​ideaA​​​ 和​​ideaB​​ 。
  • 交换​​ideaA​​​ 和​​ideaB​​ 的首字母。
  • 如果得到的两个新名字都不在​​ideas​​​ 中,那么​​ideaA ideaB​​(串联​​ideaA​​​ 和​​ideaB​​ ,中间用一个空格分隔)是一个有效的公司名字。
  • 否则,不是一个有效的名字。
  • 返回 不同 且有效的公司名字的数目。

    示例 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


    【文章转自迪拜服务器 http://www.558idc.com/dibai.html处的文章,转载请说明出处】
    上一篇:Python描述 LeetCode 498. 对角线遍历
    下一篇:没有了
    网友评论