Python每日一练(20230319)
创始人
2025-05-30 17:01:19

目录

1. 有效的括号  ★

2. 简化路径  ★★

3. 整数转换英文表示  ★★★

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 有效的括号

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

示例 4:

输入:s = "([)]"
输出:false

示例 5:

输入:s = "{[]}"
输出:true

提示:

  • 1 <= s.length <= 10^4
  • s 仅由括号 '()[]{}' 组成

出处:

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

代码:

class Solution:def isValid(self, s: str) -> bool:parentheses = ['(', '[', '{',')', ']', '}']i = 0sum = [0, 0, 0]top = []while i < len(s):c = s[i]j = 0while j <= 2:if c == parentheses[j]:top.append(j)sum[j] += 1elif c == parentheses[j+3]:if len(top) == 0 or top[len(top)-1] != j:return Falsetop.pop()sum[j] -= 1j += 1i += 1if sum[0] != 0 or sum[1] != 0 or sum[2] != 0:return Falseelse:return True
# %%
s = Solution()
print(s.isValid(s = "()[]{}"))
print(s.isValid(s = "(]"))
print(s.isValid(s = "([)]"))
print(s.isValid(s = "{[]}"))

输出:

True
False
False
True

进阶: 

class Solution:def isValid(self, s: str) -> bool:stack = []for c in s:if c in ['(', '[', '{']:stack.append(c)else:if not stack:return Falseif c == ')' and stack.pop() != '(':return Falseif c == ']' and stack.pop() != '[':return Falseif c == '}' and stack.pop() != '{':return Falsereturn not stack
# %%
s = Solution()
print(s.isValid(s = "()[]{}"))
print(s.isValid(s = "(]"))
print(s.isValid(s = "([)]"))
print(s.isValid(s = "{[]}"))

2. 简化路径

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。

请注意,返回的 规范路径 必须遵循下述格式:

  • 始终以斜杠 '/' 开头。
  • 两个目录名之间必须只有一个斜杠 '/' 。
  • 最后一个目录名(如果存在)不能 以 '/' 结尾。
  • 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。

返回简化后得到的 规范路径 。

示例 1:

输入:path = "/home/"
输出:"/home"
解释:注意,最后一个目录名后面没有斜杠。 

示例 2:

输入:path = "/../"
输出:"/"
解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。

示例 3:

输入:path = "/home//foo/"
输出:"/home/foo"
解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。

示例 4:

输入:path = "/a/./b/../../c/"
输出:"/c"

提示:

  • 1 <= path.length <= 3000
  • path 由英文字母,数字,'.''/' 或 '_' 组成。
  • path 是一个有效的 Unix 风格绝对路径。

出处:

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

代码:

class Solution(object):def simplifyPath(self, path):""":type path: str:rtype: str"""result = []plist = path.split('/')for pos in plist:if pos:if pos == '..':try:result.pop()except:result = []elif pos != '.':result.append(pos)return '/'+'/'.join(result)# %%
s = Solution()
print(s.simplifyPath(path = "/home/"))
print(s.simplifyPath(path = "/../"))
print(s.simplifyPath(path = "/home//foo/"))
print(s.simplifyPath(path = "/a/./b/../../c/"))

代码2:

class Solution:def simplifyPath(self, path: str) -> str:def simplify(path_list):stack = []for p in path_list:if p == '..':if stack:stack.pop()elif p != '.' and p:stack.append(p)return '/' + '/'.join(stack)return simplify(path.split('/'))# %%
s = Solution()
print(s.simplifyPath(path = "/home/"))
print(s.simplifyPath(path = "/../"))
print(s.simplifyPath(path = "/home//foo/"))
print(s.simplifyPath(path = "/a/./b/../../c/"))

输出:

/home
/
/home/foo
/c


3. 整数转换英文表示

将非负整数 num 转换为其对应的英文表示。

示例 1:

输入:num = 123
输出:"One Hundred Twenty Three"

示例 2:

输入:num = 12345
输出:"Twelve Thousand Three Hundred Forty Five"

示例 3:

输入:num = 1234567
输出:"One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"

示例 4:

输入:num = 1234567891
输出:"One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"

提示:

  • 0 <= num <= 2^31 - 1

出处:

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

代码:

class Solution(object):def numberToWords(self, num):""":type num: int:rtype: str"""def helper(num): n = int(num)num = str(n)if n < 100:return subhelper(num)else:return ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"][int(num[0]) - 1] + " Hundred " + subhelper(num[1:]) if num[1:] != "00" else ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"][int(num[0]) - 1] + " Hundred"def subhelper(num): n = int(num)l1 = ["Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"]l2 = ["Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"]l3 = ["Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"]if n < 10:return l1[int(num)]if 10 <= n < 20:return l2[n - 10]if 20 <= n < 100:return l3[int(num[0]) - 2] + " " + l1[int(num[1])] if num[1] != "0" else l3[int(num[0]) - 2]res = ""if num >= 1000000000:res = helper(str(num)[0]) + " Billion"if str(num)[1:4] != "000":res += " " + helper(str(num)[1:4]) + " Million"if str(num)[4:7] != "000":res += " " + helper(str(num)[4:7]) + " Thousand"if str(num)[7:] != "000":res += " " + helper(str(num)[7:])elif num >= 1000000:res = helper(str(num)[:-6]) + " Million"if str(num)[-6:-3] != "000":res += " " + helper(str(num)[-6:-3]) + " Thousand"if str(num)[-3:] != "000":res += " " + helper(str(num)[-3:])elif num >= 1000:res = helper(str(num)[:-3]) + " Thousand"if str(num)[-3:] != "000":res += " " + helper(str(num)[-3:])else:return helper(str(num))return res# %%
s = Solution()
print(s.numberToWords(123))
print(s.numberToWords(1234))
print(s.numberToWords(1234567))
print(s.numberToWords(1234567891))

代码2:

class Solution:def numberToWords(self, num: int) -> str:if num == 0:return 'Zero'def to_words(n):ones = ['', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine']tens = ['', 'Ten', 'Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety']teens = ['', 'Eleven', 'Twelve', 'Thirteen', 'Fourteen', 'Fifteen', 'Sixteen', 'Seventeen', 'Eighteen', 'Nineteen']if n == 0:return ''elif n < 10:return ones[n]elif n < 20:return teens[n % 10]elif n < 100:return tens[n // 10] + ' ' + to_words(n % 10)elif n < 1000:return ones[n // 100] + ' Hundred ' + to_words(n % 100)elif n < 1000000:return to_words(n // 1000) + ' Thousand ' + to_words(n % 1000)elif n < 1000000000:return to_words(n // 1000000) + ' Million ' + to_words(n % 1000000)else:return to_words(n // 1000000000) + ' Billion ' + to_words(n % 1000000000)return to_words(num).strip()# %%
s = Solution()
print(s.numberToWords(123))
print(s.numberToWords(1234))
print(s.numberToWords(1234567))
print(s.numberToWords(1234567891))

输出:

One Hundred Twenty Three
One Thousand Two Hundred Thirty Four
One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven
One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One


🌟 每日一练刷题专栏 🌟

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

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

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

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

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

相关内容

热门资讯

关于面试时HA(RAC)会问到... 1.什么是RAC(Real Application Cluster)&#...
关于车身广告的规定(车身广告是... 今天给各位分享关于车身广告的规定的知识,其中也会对车身广告是否合法进行解释,如果能碰巧解决你现在面临...
尾灯熏黑是怎么弄的?(尾灯熏黑... 本篇文章极速百科给大家谈谈尾灯熏黑是怎么弄的?,以及尾灯熏黑后怎么弄掉对应的知识点,希望对各位有所帮...
2030年汽油车就不能开了吗?... 本篇文章极速百科给大家谈谈2030年汽油车就不能开了吗?汽油车什么时候淘汰,以及2025汽油车会淘汰...
法拉利各个款式的红色跑车你钟爱... 今天给各位分享法拉利各个款式的红色跑车你钟爱哪一款的知识,其中也会对法拉利红色车多少钱一辆进行解释,...
一尺等于多少厘米(一尺等于多少... 本篇文章极速百科给大家谈谈一尺等于多少厘米,以及一尺等于多少厘米长度对应的知识点,希望对各位有所帮助...
mg是什么意思单位(mg是什么... 今天给各位分享mg是什么意思单位的知识,其中也会对mg是什么单位g又是什么单位进行解释,如果能碰巧解...
瑞纳1.4手动真实油耗-百度有... 本篇文章极速百科给大家谈谈瑞纳1.4手动真实油耗-百度有驾,以及瑞纳14l油耗多少真实油耗对应的知识...
2012款福克斯按键介绍(20... 今天给各位分享2012款福克斯按键介绍的知识,其中也会对2012款福克斯按键功能介绍进行解释,如果能...
轻松缓存 Android + ... 轻松缓存 Android + Kotlin + Flow 技术背景 在某些情况下&...
搜索系统(二) term weight 如何衡量一个词在一篇文档中的重要性 词频率(tf)...
基于“遥感+”融合技术在碳储量... 以全球变暖为主要特征的气候变化已成为全球性环境问题,对全球可持续发展带来严峻挑战。20...
描写人物表情神态的四字词语(描... 本篇文章极速百科给大家谈谈描写人物表情神态的四字词语,以及描写人物表情神态的四字词语对应的知识点,希...
黑天鹅寓意着什么意思(黑天鹅寓... 本篇文章极速百科给大家谈谈黑天鹅寓意着什么意思,以及黑天鹅寓意着什么意思啊对应的知识点,希望对各位有...
15磅等于多少公斤,15榜是多... 15磅等于多少公斤目录15磅等于多少公斤15榜是多少kg磅和公斤是怎么换算的?15lb是多少公斤15...
Linux基本入门笔记 环境搭建 虚拟机软件:Vmware 15 pro linux版本:cen...
蔡少芬邱淑贞怎么分清(蔡少芬 ... 今天给各位分享蔡少芬邱淑贞怎么分清的知识,其中也会对蔡少芬 邱淑贞 像进行解释,如果能碰巧解决你现在...
报名CSGO/steam游戏搬... 报名CSGO/steam游戏搬砖项目前,这些内幕一定要了解 我相信大多数人都经常困惑...
二叉树的最小深度——递归法、迭... 1题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节...
基于java下的Springb... 基于java下的Springboot框架的=学生毕业离校系统 开发语言:Ja...
年收入四万算贫困吗 极速百科网... 年收入四万算贫困吗目录年收入四万算贫困吗年收入四万算贫困吗贫困户家庭年收入的标准是多少年收入四万算贫...
麒麟655与骁龙820谁好,骁... 麒麟655与骁龙820谁好目录麒麟655与骁龙820谁好骁龙和麒麟哪个好?820处理器与625处理器...
怎样找圆心,给你一个圆,你能至... 怎样找圆心目录怎样找圆心给你一个圆,你能至少用几种方法找到圆心如何确定圆心位置?怎样找圆心 1...
世界上著名的科学家有哪些,科学... 世界上著名的科学家有哪些目录世界上著名的科学家有哪些科学家有哪些人?6个世界上著名的科学家的名字例举...
lgsvl 现状 lgsvl自从2023年1月停服务以来,几乎就没有lgsvl最新的消息了,...
如何用深度强化学习做单元测试代... 设计一个用强化学习来生成单元测试代码的系统需要考虑以下几个方面: Agent...
STM32的推挽输出和开漏输出 文章目录 前言一、推挽输出二、开漏输出三、区别和适应场景总结 前言 本篇文章将带大家了解STM...
表示天气很冷的朋友圈说说,天气... 表示天气很冷的朋友圈说说目录表示天气很冷的朋友圈说说天气变冷的说说发朋友圈天冷了高情商朋友圈句子有哪...
太阳的结构层次由核心依次是什么... 太阳的结构层次由核心依次是什么目录太阳的结构层次由核心依次是什么太阳从内到外依次可以分成哪几个层次由...
公务员报名时照片如何处理,20... 公务员报名时照片如何处理目录公务员报名时照片如何处理2021国家公务员考试报名“照片处理工具”如何使...