Leetcode练习记录一:20211215
第一题:回文数(简单)
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
示例 4:
输入:x = -101
输出:false
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
思路:
较为简单的做法是,将这个正数先转为字符串,然后将该字符串逆序,判断逆序前与逆序后是否相等即可。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
str_input = str(x) # 将int转化为str
str_mid = str_input[::-1] # 将原字符串逆序
res = False
if str_input==str_mid: # 比较逆序前后是否相同
res = True
return res
第二题:最长公共前缀(简单)
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
思路:
由于在最理想的情况下,最长公共前缀为这个list中长度最短的那个字符串。因此这个最长公共前缀的长度不可能大于list中任意一个字符串的长度,故首先找到这个list所有字符串长度的最小值。
从第一位开始比较每个字符串各个位置对应的字符是否相同,如果所有字符串的该位置字符全部相同,则将该元素添加至结果数组;否则直接跳出循环,程序结束。
最后通过判断数组长度对应题目要求输出即可。
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
mid = [] # 存储结果数组
res = "" #存储最终结果
min_length = len(strs[0]) # 记录所有字符串长度的最小值
for i in range(1,len(strs)):
mid_length = len(strs[i])
if mid_length<=min_length: # 更新最小值
min_length = mid_length
for i in range(min_length): # 从每个字符串的第一个字符开始遍历判断
mid_str = strs[0][i] # 记录当前判断的字符
flag = 1 # 结果判定的标识位
for j in range(1,len(strs)):
if strs[j][i]!=mid_str: # 匹配不上,更改标识位,跳出当前内层循环
flag = 0
break
if flag ==1: # 当前字符匹配成功,加入结果数组
mid.append(mid_str)
if flag==0: # 当前字段匹配失败,终止程序
break
if len(mid)>0: # 根据题目要求正确输出对应格式
res = "".join(mid)
else:
res = ""
return res