目录
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('谢谢你使用乘法表') 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 每日一练 专栏 |