Python每日一练(20230312)
Posted Hann Yang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python每日一练(20230312)相关的知识,希望对你有一定的参考价值。
目录
2. 字母异位词分组 ★★
3. 俄罗斯套娃信封问题 ★★★
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('谢谢你使用乘法表')
break
else:
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] * 26
for ch in s:
index = ord(ch) - ord('a')
table[index] += 1
return 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 0
envelopes.sort(key=lambda x: (x[0], -x[1]))
dp = [1] * n
for 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 每日一练 专栏 |
以上是关于Python每日一练(20230312)的主要内容,如果未能解决你的问题,请参考以下文章