Python算法题集_字母异位词分组

本文为Python算法题集之一的代码示例

题目49:字母异位词分组

说明:给你一个字符串数组,请你将 字母异位词 组合在一起,可以按任意顺序返回结果列表

字母异位词 :是由重新排列原单词所有字母得到的新单词

  1. 使用同步数组list和检索集合set

    def groupAnagrams_ext1(self, strs):iLen = len(strs)setlist = []for iIdx in range(iLen):setlist.append(sorted(strs[iIdx]))allset = []for aSet in setlist:if aSet in allset:continueallset.append(aSet)result=[]for aSetItem in allset:tmpResultItem=[]for iIdx in range(iLen):if setlist[iIdx] == aSetItem:tmpResultItem.append(strs[iIdx])result.append(tmpResultItem)return resultastr = ["eat", "tea", "tan", "ate", "nat", "bat"]
    print(groupAnagrams_ext1(astr))
    # 运行结果
    # [['eat', 'tea', 'ate'], ['tan', 'nat'], ['bat']]
    
  2. 使用同步数组list和结果数组list

    def groupAnagrams_ext2(self, strs):iLen = len(strs)sortlist = []for iIdx in range(iLen):sortlist.append(sorted(strs[iIdx]))result, resultsort=[], []for iIdx in range(iLen):if sortlist[iIdx] in resultsort:result[resultsort.index(sortlist[iIdx])].append(strs[iIdx])else:resultsort.append(sortlist[iIdx])result.append([strs[iIdx]])return resultastr = ["eat", "tea", "tan", "ate", "nat", "bat"]
    print(groupAnagrams_ext2(astr))
    # 运行结果
    # [['eat', 'tea', 'ate'], ['tan', 'nat'], ['bat']]
    
  3. 使用字典和元组

    def groupAnagrams_ext3(self, strs):from collections import Counteranagrams = {}for s in strs:counter = Counter(s)key = tuple(sorted(counter.items()))if key not in anagrams:anagrams[key] = []anagrams[key].append(s)return list(anagrams.values())astr = ["eat", "tea", "tan", "ate", "nat", "bat"]
    print(groupAnagrams_ext3(astr))
    # 运行结果
    # [['eat', 'tea', 'ate'], ['tan', 'nat'], ['bat']]
    

    一日练,一日功,一日不练十日空

    may the odds be ever in your favor ~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GCC 内联汇编

LINUX下的汇编入门 AT&T风格 汇编 和GCC风格汇编 汇编代码的调试 前面写了三篇,是自我摸索三篇,摸着石头过河,有些或许是错误的细节,不必在意! 今天我们直接用GCC编译C语言代码,且在C语言里面内嵌AT&T风格的汇编! 前三篇大家了解即可,我们重点放在内嵌汇编里,简单快…

Java设计模式-单例模式(2)

大家好,我是馆长!从今天开始馆长开始对java设计模式的创建型模式中的单例、原型、工厂方法、抽象工厂、建造者的单例模式进行讲解和说明。 单例模式(Singleton) 定义 某个类只能生成一个实例,该类提供了一个全局访问…

AI如何助力制造业变革?

当前,制造业企业正在转型发展,发力智能制造,以实现降低成本、提高效率和提高客户满意度的目标。这其中人工智能(AI)被认为是最重要的一项技术。AI技术可以优化制造流程,大大提高生产力,帮助企业…

houdini rnn

1.3.RNN模型_哔哩哔哩_bilibili 此公式来自于吴恩达P1.3视频 按公式推测rnn内部结构,如有错误,敬请指正

【话题】边缘计算的挑战和机遇

边缘计算是一种新的计算范式,其核心是在网络边缘处理数据,而不是传统的中心式云计算模式。这种计算方式的兴起得益于物联网(IoT)的普及和丰富的云服务的成功。 机遇: 响应时间优化:由于数据处理更接近数据…

解决系统开发中的跨域问题:CORS、JSONP、Nginx

文章目录 一、概述1.问题场景2.浏览器的同源策略3.解决思路 二、一点准备工作1.创建前端工程12.创建后端工程3.创建前端工程24.跨域问题 三、方法1:使用CORS四、方法2:JSONP五、方法3:Nginx1.安装和启动(windows)2.使用…

初识VUE

文章目录 Vue是什么1.创建一个Vue实例2.插值表达式{{ }}3.Vue的响应式特性4.开发者工具的安装 Vue是什么 概念:Vue是一个用于构建用户界面的渐进式框架 ①构建用户界面:基于数据渲染出用户看到的界面 ②渐进式:循序渐进 ③ 框架&#xff1…

Flask用于生产环境

Flask是一个用Python编写的轻量级Web应用框架,可以用于开发和部署Web服务。要安装Flask,您需要以下步骤: - 安装Python和pip,如果您还没有的话。 - 创建一个虚拟环境,以便隔离您的Flask应用程序和其他Python项目。 - …

MySQL经典面试题

目录 1、查询课程名称为“数据库”,且分数低于60分的学生姓名和分数 2、对所有性别为“女”的学生,同时课程名为“高等数学”的分数统一加5 3、删除姓名为“张翰”(学号1)课程名为“数据库”的课程成绩 4、统计2021年11月每天…

6.4.4释放音频

6.4.4释放音频 许多Flash动画里的音乐或歌曲非常好听,能不能在没有源文件的情况下把里面的声音文件取出来呢?利用Swf2VideoConverter2可以轻松做到这一点。 1.单击“添加”按钮,在弹出的下拉菜单中选择“添加文件”,…

金蝶云星空表单插件获取单据体数据

文章目录 金蝶云星空表单插件获取单据体数据 金蝶云星空表单插件获取单据体数据 使用标识报错 var thisEntry this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;应该使用实体属性 var thisEntry this.View.Model.DataObject["BillEntry&q…

搜索经典题——填充 9*9矩阵

题目:给定一个九行九列矩阵,填充矩阵元素,要求: 1、每一行每一列,每个小九宫格(图片画粗的地方就是)不能包含相同元素 2、每一行,每一列,每个小九宫格均会完整出现1-9的数…

面试题目,你对前端工程化的了解

前端工程化是通过工具和流程来提高软件开发效率、降低维护成本以及改善项目可维护性的方法。在前端领域,前端工程化通常包括以下方面内容 版本控制 使用 git 来管理代码的版本,追踪变更,协作开发等项目脚手架 使用项目的脚手架进行项目的初始…

【Python爬虫】项目案例讲解,一步步教你爬取淘宝商品数据!

前言 随着互联网时代的到来,人们更加倾向于互联网购物,某宝又是电商行业的巨头,在某宝平台中有很多商家数据,今天带大家使用pythonselenium工具获取这些公开的商家数据 环境介绍: python 3.6pycharmseleniumcsvtime…

SpringBoot自动装配原理及分析

一、什么是自动装配 在使用SpringBoot的时候,会自动将Bean装配到IOC容器中。例如我们在使用Redis数据库的时候,会引入依赖spring-boot-starter-data-redis。在引入这个依赖后,服务初始化的时候,会将操作Redis需要的组件注入到Ioc…

vue3 项目中 arguments 对象获取失败问题

问题 在 vue3 项目中 获取到的 arguments 对象与传入实参不符,打印出函数中的 arguments 对象显示如下: 原因 作者仔细回看代码才发现,自己一直用的是 vue3 的组合式写法,函数都是箭头函数,而箭头函数不存在 argumen…

故障诊断传感器的位置会影响振动信号分类的精度吗?

问题描述:故障诊断传感器的位置会影响振动信号分类的精度吗? 问题解答: 是的,故障诊断中传感器的位置确实可能会影响振动信号分类的精度。 首先,传感器的位置决定了能够采集到的振动信号的特性。如果传感器靠近故障…

cetos7搭建部署k8s 版本1.28

主机分配 内存最少是4G cpu个数最少两个 IP内存CPU主机名192.168.231.12044K1 192.168.231.12144K2192.168.231.12244K3 关闭防火墙 systemctl stop firewalled 关闭swap vim /etc/fstab 设置主机名称 hostnameset 安装docker 三个主机 初始化集群 在mas…

1432 - 走出迷宫的最少步数-广度优先搜索BFS

代码 #include<bits/stdc.h> using namespace std; char a[51][51]; int r,c; int fx[4]{0,0,1,-1}; int fy[4]{1,-1,0,0}; int tx,ty; struct Node{int x,y,step; }; int bfs(int x,int y){a[x][y]#;queue<Node> q;q.push({x,y,1});while(!q.empty()){Node Curre…

第五篇:其他窗口部件 QAbstractButton

QAbstractButton QAbstractButton 类是按钮部件的抽象基类&#xff0c;提供了按钮的通用功能。它的子类包括标准按钮 QPushButton、工具按钮 QToolButton、复选框 QCheckBox和单选按钮 QRadioButton 等。 QPushButton QPushButton 提供了创建交互按钮的基本功能。它可以包含…