Python如何实现LeetCode 6094题的公司命名规则?

2026-05-27 23:301阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计884个文字,预计阅读时间需要4分钟。

Python如何实现LeetCode 6094题的公司命名规则?

Python描述:LeetCode 6094. 公式命名 —— 大家常好,我是程序员(qí+guān+jí+é+),在【程序员】公众号、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​​ 表示在公司命名过程中使用的名字列表。公司命名流程如下:

  • 从​​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:

    Python如何实现LeetCode 6094题的公司命名规则?

    输入: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


    本文共计884个文字,预计阅读时间需要4分钟。

    Python如何实现LeetCode 6094题的公司命名规则?

    Python描述:LeetCode 6094. 公式命名 —— 大家常好,我是程序员(qí+guān+jí+é+),在【程序员】公众号、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​​ 表示在公司命名过程中使用的名字列表。公司命名流程如下:

  • 从​​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:

    Python如何实现LeetCode 6094题的公司命名规则?

    输入: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