python练习题

以下例题属于力扣题库原题,感兴趣的自行搜索练手。

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

练习一、字符串相乘

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。转换为整数相乘,没有思考的意义。

示例 1:

输入: num1 = "2", num2 = "3"

输出: "6"

python 复制代码
class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        sum1 = 0
        sum2 = 0
        count1 = 1
        count2 = 1
        for i in num1:
            sum1 += int(i)*(10**(len(num1)-count1))
            count1 += 1
        for i in num2:
            sum2 += int(i)*(10**(len(num2)-count2))
            count2 += 1
        c = sum1*sum2
        return str(c)

练习二、合并两个链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

输入:l1 = 1,2,4, l2 = 1,3,4

输出:1,1,2,3,4,4

python 复制代码
class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        dumy = ListNode()
        curry = dumy
        while list1 and list2 :
            if list1.val < list2.val:
                curry.next = list1
                list1 = list1.next
            else:
                curry.next = list2
                list2 = list2.next
            curry = curry.next
        curry.next = list1 if list1 else list2
        return dumy.next

练习三、反转列表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

输入:head = 1,2,3,4,5

输出:5,4,3,2,1

迭代方法

python 复制代码
Class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        current = head           #头节点
        pre = None               #头节点前
        while(current):          #循环条件
            temp = current.next  #提前保存
            current.next = pre   #改变指向方向
            pre = current        #指针前移
            current = temp       #指针前移
        return pre               #返回新的头节点

练习四、寻找三角形最大周长

给定由一些正数(代表长度)组成的数组 nums ,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回 0。

示例 1:

输入:nums = 2,1,2

输出:5

解释:你可以用三个边长组成一个三角形:1 2 2。

python 复制代码
class Solution:
    def largestPerimeter(self, nums: List[int]) -> int:     
        nums.sort(reverse=True)               #降序排序
        for i in range(0,len(nums)-2):        #控制边界
            if nums[i] < nums[i+1]+nums[i+2]:
                return(nums[i]+nums[i+1]+nums[i+2])
        return 0

排序,直接从最大值入手,以免大数据超时。排序后不用担心漏值。如果取三个排好大小的数,后面小的两个数小于大的数,那么后面不可能有两个数大于这个大的数。,一旦满足大条件,找到的即最大周长。

练习五、向字符串添加空格

给你一个下标从 0 开始的字符串 s ,以及一个下标从 0 开始的整数数组 spaces 。

数组 spaces 描述原字符串中需要添加空格的下标。每个空格都应该插入到给定索引处的字符值 之前 。

例如,s = "EnjoyYourCoffee" 且 spaces = 5, 9 ,那么我们需要在 'Y' 和 'C' 之前添加空格,这两个字符分别位于下标 5 和下标 9 。因此,最终得到 "Enjoy Your Coffee" 。

请你添加空格,并返回修改后的字符串

输入:s = "LeetcodeHelpsMeLearn", spaces = 8,13,15

输出:"Leetcode Helps Me Learn"

解释:

下标 8、13 和 15 对应 "LeetcodeHelpsMeLearn" 中加粗斜体字符。

接着在这些字符前添加空格。

python 复制代码
class Solution:
    def addSpaces(self, s: str, spaces: List[int]) -> str:
            lis = []
            pre = 0
            for i in spaces:
                lis.append(s[pre:i])
                pre = i 
            lis.append(s[pre:])
            s = ' '.join(lis)
            return s

建议切片连接,不然大数据时间复杂度太高。

相关推荐
_Evan_Yao6 小时前
前后端联调怎么排查问题?从 Network 到后端日志,一步步定位错误
开发语言·后端·团队开发·需求分析
hudd6686 小时前
JavaEE 初阶 - 多线程(进阶)
java·开发语言·java-ee
孟健6 小时前
从单体失控到解耦管道:用 Unix 哲学重构 Anthropic 式多 Agent 动态工作流
人工智能·python·架构
小白快快跑哦7 小时前
python-字符串全解(六):正则表达式-前后相断言
开发语言·python·正则表达式·前后相断言
kimnoic7 小时前
Python数据分析中正则表达式匹配字符串与常用函数示例详解
开发语言·python
中屹指纹浏览器svip7 小时前
打开账号环境网页报错,常见原因有哪些?
服务器·开发语言·php·中屹指纹浏览器
许墨の小蝴蝶7 小时前
Pillow 替换图片文字后字号偏小的排查
python·pillow
朝朝辞暮i7 小时前
第 01 讲:Python 变量、对象、数据类型与内存引用
开发语言·python
外收内放7 小时前
Python基础语法练习题(69)
开发语言·python
lojox7 小时前
深入理解 C++ STL:vector 底层实现、迭代器失效与 list 特性
开发语言·c++