整数反转
题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
分析
感觉最好的办法就是换成字符串来操作,python3对int和str的切换的方法还是很多的
解题
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
flag = ''
if x == 0:
return 0
s = str(x)
if s[0] == '-':
flag += '-'
flag += s[len(s)-1::-1].rstrip('-').lstrip('0')
x = int(flag)
if -2**31<x<2**31-1:
return x
return 0
还是蛮简单的一个,热热手吧,但是看了之后熟悉一下str的strip操作也蛮好的
回文数
题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
分析
这题字面意思,只需要判断,不需要输出,还是比较容易想的,可能是之前拿C写过类似的吧,因为输入的是整数,用字符串很棒,因为可以用索引
解题
class Solution:
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
s1 = str(x)
s2 = s1[len(s1)-1::-1]
for i in range(len(s1)):
if s1[i] != s2[i]:
return False
return True
最长公共前缀
题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
分析
还是不难吧,是按照list输入的,最开始的想法是只要遍历就可以了
解题
class Solution:
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
flag = ''
if '' in strs or len(strs) == 0 or strs[0] == '':
return flag
for i in range(len(strs[0])):
temp = strs[0][i]
for j in range(len(strs)):
if len(strs[j])<i+1:
return flag
if temp != strs[j][i]:
return flag
flag += temp
return flag
可能不是最快的,但可能是最容易想到的,最直观的吧,二叉树什么的暂时还没用上,不过要疯狂的注意数组越界问题
Hexo链接:https://woaixiaoyuyu.github.io/2019/02/06/leetcode-整数反转-回文数-最长公共前缀/#more