第三天
4道水题
leetcode 006 ZigZag Conversion
class Solution:
# @param {string} s
# @param {integer} numRows
# @return {string}
def convert(self, s, numRows):
if numRows == 1:
return s
a = []
for i in range(numRows):
a.append('')
pointer = 0
add = 1
for temp in s:
a[pointer] = a[pointer] + temp
pointer = pointer + add
if pointer == numRows - 1:
add = -1
if pointer == 0:
add = 1
s = ''
for i in range(numRows):
s = s + a[i]
return s
模拟 一次移动一位 到边界换方向移
leetcode 007 Reverse Integer
class Solution:
# @param {integer} x
# @return {integer}
def reverse(self, x):
num=[]
flag = 0
if x < 0 :
x = -x
flag = 1
while x/10 != 0:
num.append(x % 10)
x = x/10
num.append(x % 10)
x = 0
for i in num:
x = x * 10 + i
if x > 2147483647:return 0
if x == 2147483648 and flag == 1:return 0
if flag == 0:
return x
else :
return -x
反转数字。。。。
leetcode 008 String to Integer (atoi)
class Solution:
# @param {string} str
# @return {integer}
def myAtoi(self, str):
temp = 0
flag = 0
mark = 0
mark2 =0
for i in str:
if i == ' 'and mark == 0:
continue
mark = 1
if i == '-':
if mark2 == 1:
return 0
flag = 1
mark2 = 1
continue
if i == '+':
if mark2 == 1:
return 0
flag = 0
mark2 = 1
continue
if i == ' ':
return temp
if i >= '0' and i <= '9':
temp = temp * 10 + int(i)
else:
break
if flag == 1 and temp == 2147483647:
return -2147483647
if temp >= 2147483647:
if flag == 0:
return 2147483647
else :
return -2147483648
if flag == 0:
return temp
else :
return -temp
字符串转数字。。 和标准的atoi函数有点不一样
leetcode 009
class Solution:
# @param {integer} x
# @return {boolean}
def isPalindrome(self, x):
if x < 0:
return False
str1 = str (x)
start = 0
end = len(str1) - 1
if len(str1) == 0:
return False
if len(str1) == 1:
return True
while start <= end:
if str1[start] != str1[end]:
return False
start = start +1
end = end - 1
return True
判断整个数字是不是回文子串
今天看了 leet010 的题 类似正则 有思路 但是有可能超时 明天写
贵在坚持