初学python3 尝试刷leetcode

杀马特。学长 韩版系。学妹 提交于 2020-01-29 04:13:42

初学Python3

看了一本从入门到精通的python书,看的还挺认真的不过是个两周忘光了。。。。
所以想学一门语言我觉得还是要刷题,leetcode里面的题还是挺有分量的,个人认为比pta好一些
做了两个比较简单的题现在总结一下:

两数之和

在这道题中用到了enumerate函数
描述
enumerate函数有两个参数
在这里插入图片描述
keys()函数是提取列表的值或者说名字(提取后的是字典)
在这里插入图片描述
这里说一下为什么用get函数()
首先get函数有两个参数 第一个是查找到值,第二个是如果失败的返回值
如果用数组下标代替的话,查找失败就会报错
以下为代码:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dic = {}
for i,n in enumerate(nums):
m = target - n
if n not in dic.keys():
dic[m] = i
else:
return[dic.get(n),i]
okk 因为自己比较菜又找了一道比较简单的题

整数反转

解题思路:输入一个整数要想比较方便比较让他转换成列表(这时就需要list()函数将字符串转换为列表)而str()可以转换为字符串
然后我们得到了一个字符串,需要判断是否为负(下标0)判断是否为负
反转列表 ——>列表名称[起始,末尾,间隔 ]
需要转换成int类型比较是否超出范围
代码如下:
class Solution:
def reverse(self, x: int) -> int:
tmp = list(str(x))
if tmp[0] != ‘-’:
result_list = tmp[::-1] #翻转列表
tmp_str = ‘’.join(result_list) #列表转换为字符串
if (int(tmp_str))<2* *31-1:
return int(tmp_str)
else:
return 0
else:
del tmp[0]
result_list = tmp[::-1]
tmp_str = ‘’.join(result_list)
if (-int(tmp_str))>-2**31:
return -int(tmp_str)
else:
return 0

回文数

这道题思路是每次取第一个和最后一个数比较如果相等则继续,否则返回false
这道题很简单直接上代码
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
base = 1
while x // base:
base *= 10
base //= 10
while x:
left = x//base
right = x%10
if left != right:
return False
x = (x%base)//10
base //= 100
return True
//和/的区别是//直接舍掉小数,而/不舍掉

罗马数字转换整数

利用python里面的字典键对值从左往右开始逐一匹配
有一点需要注意的是iv 和ix比较特殊,当你遍历到iv时i是1而v是5相加得6,但其实应该为4 所以需要判断如果左比右小则减,大则加
代码如下:
class Solution:
def romanToInt(self, s: str) -> int:
dic = {
“I”:1,
“V”:5,
“X”:10,
“L”:50,
“C”:100,
“D”:500,
“M”:1000
}
ans = 0
for i, char in enumerate(s[:-1]):
if dic[char] >= dic[s[i+1]]:
ans += dic[char]
else:
ans -= dic[char]
ans += dic[s[-1]]
return ans

最长公共前缀

这道题需要了解zip()函数
在这里插入图片描述
拆分字符串化成元组成为列表,然后逐个比较,列表里元素不重合所以如果为 1则为相同字符
代码如下:
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
str2=""
#序列解包,将字符串拆分为元组形式,[‘ac’,‘re’]==>(‘a’,‘r’),(‘c’,‘e’)
for n in zip(*strs):
#将其集合化,判断是否为1
list1=set(n)
if len(list1)==1:
str2+=n[0]
else:
break
return str2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!