作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢?
13. 罗马数字转整数
- 题目要求:
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
- 示例:
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
输入: "III"
输出: 3
输入: "IV"
输出: 4
输入: "IX"
输出: 9
输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
- 分析:
将罗马数字对应的数值存入一个字典,按题目要求进行判断换算。
class Solution:
def romanToInt(self,s):
lists =[]
dicts ={
'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,
}
sum = 0
for i in s :
lists.append(i)
i = 0
while i <=len(lists)-1:
if i !=(len(lists)-1):
if(dicts[lists[i]]>=dicts[lists[i+1]]):
sum = sum + dicts[lists[i]]
i = i+1
else:
sum = sum +dicts[lists[i+1]]-dicts[lists[i]]
i = i+2
else:
sum = sum+dicts[lists[i]]
i= i+1
return sum
14. 最长公共前缀
- 题目要求:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
- 分析:
取字符串数组中最短字符串,以它为模板从头进行比较。
class Solution:
def longestCommonPrefix(self , strs):
if strs==[]:
return ""
else:
num = min([len(x) for x in strs])
strings = ""
x= 0
for i in range(0,num):
for l in range(0,len(strs)):
if strs[0][i] !=strs[l][i]:
x=1
break
if x==1:
break
strings =strings+strs[0][i]
return strings
20. 有效的括号
- 题目要求:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
输入: "()"
输出: true
输入: "()[]{}"
输出: true
输入: "(]"
输出: false
输入: "([)]"
输出: false
输入: "{[]}"
输出: true
- 分析:
将对应的括号存入字典,作为对应的键值。读取字符串strs以栈的形式进行,遇到键则入值则出并判断是否符合题意。
class Solution:
def isValid(self,s):
dicts={
'(':')',
'[':']',
'{':'}',
}
if s=="":
return True
elif len(s)%2==1:
return False
else:
length = 0
list = []
while length<len(s):
if s[length] in dicts:
list.append(s[length])
print(s[length])
length = length + 1
else:
if list and s[length] == dicts[list[-1]]:
list.pop()
length=length+1
else:
return False
if list:
return False
return True