Python每日一练(20230427)

这篇具有很好参考价值的文章主要介绍了Python每日一练(20230427)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python每日一练(20230427)

目录

1. 三数之和  🌟🌟

2. 编辑距离  🌟🌟🌟

3. 翻转字符串里的单词  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]

示例 2:

输入:nums = []
输出:[]

示例 3:

输入:nums = [0]
输出:[]

提示:

  • 0 <= nums.length <= 3000
  • -10^5 <= nums[i] <= 10^5

出处:

https://edu.csdn.net/practice/26654052

代码:

from typing import List
class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        if len(nums) == 0:
            return []
        result = []
        unique = {}
        inv = {}
        left = None
        right = None
        nums.sort()
        i = 0
        while i < len(nums):
            if left == None and nums[i] >= 0:
                left = i
            if right == None and nums[i] > 0:
                right = i
            inv[nums[i]] = i
            i += 1
        if left == 0:
            right = len(nums)
        if right is None:
            return []
        i = 0
        while i < right:
            j = i+1
            while j < len(nums) and (-nums[i] >= nums[j] * 2):
                last = 0-nums[i]-nums[j]
                k = inv.get(last)
                if k and k > j:
                    list = [nums[i], nums[j], last]
                    hash = f'{list[0]}_{list[1]}_{list[2]}'
                    if unique.get(hash) is None:
                        unique[hash] = True
                        result.append(list)
                j += 1
            i += 1
        return result
# %%
s = Solution()
print(s.threeSum(nums = [-1,0,1,2,-1,-4]))

输出:

[[-1, -1, 2], [-1, 0, 1]]


2. 编辑距离

给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

示例 1:

输入:word1 = "horse", word2 = "ros"
输出:3
解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -> ros (删除 'e')

示例 2:

输入:word1 = "intention", word2 = "execution"
输出:5
解释:intention -> inention (删除 't')inention -> enention (将 'i' 替换为 'e')enention -> exention (将 'n' 替换为 'x')exention -> exection (将 'n' 替换为 'c')exection -> execution (插入 'u')

提示:

  • 0 <= word1.length, word2.length <= 500
  • word1 和 word2 由小写英文字母组成

以下程序实现了这一功能,请你填补空白处内容:

```python
class Solution(object):
    def minDistance(self, word1, word2):
        ls_1, ls_2 = len(word1), len(word2)
        dp = list(range(ls_1 + 1))
        for j in range(1, ls_2 + 1):
            pre = dp[0]
            dp[0] = j
            for i in range(1, ls_1 + 1):
                temp = dp[i]
                if word1[i - 1] == word2[j - 1]:
                    dp[i] = pre
                else:
                    ____________________________;
                pre = temp
        return dp[ls_1]
if __name__ == '__main__':
    s = Solution()
    print (s.minDistance("horse","ros"))        
    print (s.minDistance("intention","execution")) 
```

出处:

https://edu.csdn.net/practice/26654053

代码:

class Solution(object):
    def minDistance(self, word1, word2):
        ls_1, ls_2 = len(word1), len(word2)
        dp = list(range(ls_1 + 1))
        for j in range(1, ls_2 + 1):
            pre = dp[0]
            dp[0] = j
            for i in range(1, ls_1 + 1):
                temp = dp[i]
                if word1[i - 1] == word2[j - 1]:
                    dp[i] = pre
                else:
                    dp[i] = min(pre + 1, dp[i] + 1, dp[i - 1] + 1)
                pre = temp
        return dp[ls_1]
if __name__ == '__main__':
    s = Solution()
    print (s.minDistance("horse","ros"))        
    print (s.minDistance("intention","execution")) 

输出:

3
5


3. 翻转字符串里的单词

给你一个字符串 s ,逐个翻转字符串中的所有 单词 。

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。

请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。

说明:

  • 输入字符串 s 可以在前面、后面或者单词间包含多余的空格。
  • 翻转后单词间应当仅用一个空格分隔。
  • 翻转后的字符串中不应包含额外的空格。

示例 1:

输入:s = "the sky is blue"
输出:"blue is sky the"

示例 2:

输入:s = "  hello world  "
输出:"world hello"
解释:输入字符串可以在前面或者后面包含多余的空格,但是翻转后的字符不能包括。

示例 3:

输入:s = "a good   example"
输出:"example good a"
解释:如果两个单词间有多余的空格,将翻转后单词间的空格减少到只含一个。

示例 4:

输入:s = "  Bob    Loves  Alice   "
输出:"Alice Loves Bob"

示例 5:

输入:s = "Alice does not even like bob"
输出:"bob like even not does Alice"

提示:

  • 1 <= s.length <= 104
  • s 包含英文大小写字母、数字和空格 ' '
  • s 中 至少存在一个 单词

进阶:

  • 请尝试使用 O(1) 额外空间复杂度的原地解法。

出处:

https://edu.csdn.net/practice/26654054

代码:

class Solution:
    def reverseWords(self, s: str) -> str:
        str_list = s.split()
        s1 = ""
        for n, i in enumerate(str_list[::-1]):
            if n == len(str_list) - 1:
                s1 = s1 + i
            else:
                s1 = s1 + i + " "
        return s1
if __name__ == '__main__':
    s = Solution()
    print(s.reverseWords("the sky is blue"))     
    print(s.reverseWords("  hello world "))
    print(s.reverseWords("a good   example"))
    print(s.reverseWords("  Bob    Loves  Alice   "))
    print(s.reverseWords("Alice does not even like bob"))

输出:

blue is sky the
world hello
example good a
Alice Loves Bob
bob like even not does Alice


🌟 每日一练刷题专栏 🌟

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

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

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

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

 主页:https://hannyang.blog.csdn.net/文章来源地址https://www.toymoban.com/news/detail-427658.html

Python每日一练(20230427)

Golang每日一练 专栏

Python每日一练(20230427)

Python每日一练 专栏

Python每日一练(20230427)

C/C++每日一练 专栏

Python每日一练(20230427)

Java每日一练 专栏

到了这里,关于Python每日一练(20230427)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python每日一练(4)

      🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠️ 📝个人主页:Aileen_0v0🧸—CSDN博客 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:Aileen_

    2024年02月08日
    浏览(33)
  • Python每日一练(20230430)

    目录 1. 移除元素  🌟 2. 删除排序链表中的重复元素  🌟 3. 搜索旋转排序数组 II  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个数组  nums   和一个值  val ,你需要 ​ 原地 ​ 移除所有数值等于 

    2024年02月02日
    浏览(32)
  • Python每日一练(20230416)

    目录 1. 有效数字  🌟🌟🌟 2. 二叉树的最大深度  🌟 3. 单词搜索  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 有效数字 (按顺序)可以分成以下几个部分: 一个  小数  或者  整数 (可选)一个  \\\'e\\\'

    2023年04月16日
    浏览(41)
  • python每日一练(5)

       🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠️ 📝个人主页:Aileen_0v0🧸—CSDN博客 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:Ailee

    2024年02月08日
    浏览(36)
  • python每日一练(6)

       🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠️ 📝个人主页:Aileen_0v0🧸—CSDN博客 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:Ailee

    2024年02月08日
    浏览(32)
  • Python每日一练(20230413)

    目录 1. 最后一个单词的长度  ※ 2. 全排列  🌟🌟 3. 计数质数  ※ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个字符串  s ,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如

    2023年04月17日
    浏览(35)
  • python每日一练(9)

       🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠️ 📝个人主页:Aileen_0v0🧸—CSDN博客 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:Ailee

    2024年02月07日
    浏览(34)
  • Python每日一练(20230502)

    目录 1. 被围绕的区域  🌟🌟 2. 两数之和 II  🌟 3. 二叉树展开为链表  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个  m x n  的矩阵  board  ,由若干字符  \\\'X\\\'  和  \\\'O\\\'  ,找到所有被  \\\'X\\\'  围绕的

    2024年02月02日
    浏览(38)
  • Python每日一练(20230408)

    目录 1. 两数相除  🌟🌟 2. 分割回文串  🌟🌟 3. x 的平方根  🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给定两个整数,被除数  dividend  和除数  divisor 。将两数相除,要求不使用乘法、除法和 mod 运算符。

    2024年02月02日
    浏览(42)
  • Python每日一练(20230420)

    目录 1. 数组逐位判断  🌟 2. 交错字符串  🌟🌟 3. 二进制求和  🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 比如有以下数组: a1: 1,0,0,1,0,0,0,1 a2: 0,0,0,0,1,1,1,1 a3: 0,1,0,1,0,1,0,0 a4: 1,0,1,1,1,1,0,0 a5: ....... 抓取三个数

    2023年04月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包