当前位置:首页 » 《随便一记》 » 正文

Python每日一练(20230312)

24 人参与  2023年03月30日 10:04  分类 : 《随便一记》  评论

点击全文阅读


目录

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 <= 5000envelopes[i].length == 21 <= 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 每日一练 专栏


点击全文阅读


本文链接:http://zhangshiyu.com/post/57240.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1