当前位置: 首页 > news >正文

Python每日一练(20230312)

目录

1. 提示用户输入的简单菜单  ★

2. 字母异位词分组  ★★

3. 俄罗斯套娃信封问题  ★★★

🌟 每日一练刷题专栏

C/C++ 每日一练 ​专栏

Python 每日一练 专栏


1. 提示用户输入的简单菜单

如果用户选择菜单选项1,提示用户输入1到10之间的整数,并打印一个乘法表,显示整数1与输入整数相乘的结果,如下面的示例所示。

注意:不需要检查输入的数字是否在1到10之间。

如果用户选择菜单选项2,退出程序。

如果用户在菜单选择中输入了1或2以外的任何内容,输出信息“菜单选择错误,请重试并继续程序。”

结果应该如下:

1)创建乘法表

2)退出程序

请从以上菜单中选择一个选项:1

输入一个介于1到10之间的整数:3

1  2  3 

2  4  6 

3  6  9 

1)创建乘法表

2)退出程序

请从以上菜单中选择一个选项:4

菜单选择错误,请重试

1)创建乘法表

2)退出程序

请从以上菜单中选择一个选项:2

谢谢你使用乘法表

代码:

while True:print('1)创建乘法表')print('2)退出程序')n = input('请从以上菜单中选择一个选项:').strip()if n=='1':x = int(input('输入一个介于1到10之间的整数:'))for i in range(1,x+1):for j in range(1,x+1):print("{:>4}".format(i*j),end="")print()elif n=='2':print('谢谢你使用乘法表')breakelse:print('菜单选择错误,请重试')print('-----------------------------')

输入输出:

1)创建乘法表
2)退出程序
请从以上菜单中选择一个选项:1
输入一个介于1到10之间的整数:3
   1   2   3
   2   4   6
   3   6   9
-----------------------------
1)创建乘法表
2)退出程序
请从以上菜单中选择一个选项:4
菜单选择错误,请重试
-----------------------------
1)创建乘法表
2)退出程序
请从以上菜单中选择一个选项:2
谢谢你使用乘法表


2. 字母异位词分组

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入:[eat", "tea", "tan", "ate", "nat", "bat"]
输出:[[ate","eat","tea"],["nat","tan"],["bat"]]

说明:

  • 所有输入均为小写字母。
  • 不考虑答案输出的顺序。

代码:

class Solution(object):def groupAnagrams(self, strs):strs.sort()hash = {}for s in strs:key = self.hash_key(s)try:hash[key].append(s)except KeyError:hash[key] = [s]return list(hash.values())def hash_key(self, s):table = [0] * 26for ch in s:index = ord(ch) - ord('a')table[index] += 1return str(table)# %%
s = Solution()
print(s.groupAnagrams(strs = ["eat", "tea", "tan", "ate", "nat", "bat"]))

输出:

[['ate', 'eat', 'tea'], ['bat'], ['nat', 'tan']]


3. 俄罗斯套娃信封问题

给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。

当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。

请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。

注意:不允许旋转信封。

示例 1:

输入:envelopes = [[5,4],[6,4],[6,7],[2,3]]
输出:3
解释:最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。

示例 2:

输入:envelopes = [[1,1],[1,1],[1,1]]
输出:1

提示:

  • 1 <= envelopes.length <= 5000
  • envelopes[i].length == 2
  • 1 <= wi, hi <= 10^4

代码:

class Solution:def maxEnvelopes(self, envelopes) -> int:""":param envelopes: List[List[int]]:return: int"""n = len(envelopes)if not n:return 0envelopes.sort(key=lambda x: (x[0], -x[1]))dp = [1] * nfor i in range(n):for j in range(i):if envelopes[j][1] < envelopes[i][1]:dp[i] = max(dp[i], dp[j] + 1)return max(dp)# %%
s = Solution()
envelopes = [[5,4],[6,4],[6,7],[2,3]]
print(s.maxEnvelopes(envelopes))envelopes = [[1,1],[1,1],[1,1]]
print(s.maxEnvelopes(envelopes))

输出:

3
1


🌟 每日一练刷题专栏

 持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

  收藏,你的青睐是我努力的方向! 

 评论,你的意见是我进步的财富!  

C/C++ 每日一练 ​专栏

​​

Python 每日一练 专栏

http://www.lryc.cn/news/38965.html

相关文章:

  • 人生又有几个四年
  • 第九章:Java集合
  • 嵌入式学习笔记——STM32的USART通信概述
  • MySQL性能优化
  • C语言/动态通讯录
  • 我用Compose做了一个地图轮子OmniMap
  • STM32之SPI
  • 02 深度学习环境搭建
  • PHP导入大量CSV数据的方法分享
  • 代码看不懂?ChatGPT 帮你解释,详细到爆!
  • 【MyBatis】篇三.自定义映射resultMap和动态SQL
  • 什么是API?(详细解说)
  • 比cat更好用的命令!
  • MySQL、HBase、ElasticSearch三者对比
  • Vue+ElementUI+Vuex购物车
  • Android 录屏 实现
  • 【CSAPP】家庭作业2.55~2.76
  • Python操作MySQL数据库详细案例
  • MicroBlaze系列教程(8):AXI_CAN的使用
  • 网络安全领域中八大类CISP证书
  • stm32学习笔记-5EXIT外部中断
  • MySQL Workbench 图形化界面工具
  • 雪花算法(SnowFlake)
  • Linux防火墙
  • 网络安全系列-四十七: IP协议号大全
  • HTTP协议格式以及Fiddler用法
  • 自动写代码?别闹了!
  • 项目心得--网约车
  • 【二叉树广度优先遍历和深度优先遍历】
  • Spring Cloud微服务架构必备技术