当前位置: 首页 > news >正文

python练习题

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

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

练习一、字符串相乘

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

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

示例 1:

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

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]

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]

迭代方法

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。

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" 中加粗斜体字符。
接着在这些字符前添加空格。

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

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

相关文章:

  • OSPFv3 的 LSA 详解
  • 青少年编程与数学 02-014 高中数学知识点 01课题、概要
  • 华为机试—密码验证合格程序
  • GLSL(OpenGL 着色器语言)基础语法
  • 云计算初识
  • 如何使不同的窗体控件,适应不同分辨率的屏幕?
  • 从零开始:Windows 系统中 PowerShell 配置 FFmpeg 的详细步骤
  • 基于javaweb的SpringBoot驾校预约学习系统设计与实现(源码+文档+部署讲解)
  • Mysql 索引性能分析
  • 欢迎使用Markdown编辑器
  • 职能型组织、项目型组织、矩阵型组织的介绍及优缺点比较
  • 华为OD机试2025A卷 - 正则表达式替换(Java Python JS C++ C )
  • NX/UG二次开发—CAM获取加工操作的最低Z深度值的方法
  • 【数据结构篇】算法征途:穿越时间复杂度与空间复杂度的迷雾森林
  • 基于javaweb的SpringBoot实验室管理系统设计与实现(源码+文档+部署讲解)
  • 【差分隐私相关概念】差分隐私中的稀疏向量技术
  • Java虚拟机JVM知识点(持续更新)
  • 解决element plus el-dialog 被el-header覆盖问题
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的 AOP:实现日志记录与性能监控
  • 阻塞式IO与非阻塞IO的区别
  • 新闻网站的建设与开发/百度网讯科技客服人工电话
  • 网站服务器租用价格一般多少钱?/百度快照
  • 静态网站开发实训报告/整合营销是什么
  • 个人做盈利慈善网站/北京搜索优化排名公司
  • 建设部网站举报/关键词优化排名
  • wordpress中文广告插件下载/seo sem论坛