class Solution(object):
def lengthOfLongestSubstring(self, s):
if not s: return 0
s_dict, start, cur_len, max_len = {}, 0, 0, 0
for i in range(len(s)):
if s[i] in s_dict and start<=s_dict[s[i]]:
start = s_dict[s[i]] + 1
s_dict[s[i]] = i
cur_len = i-start+1
max_len = max(max_len, cur_len)
return max_len
class Solution(object):
def longestPalindrome(self, s):
def helper(i, j):
while i>=0 and j<n and s[i]==s[j]:
i-=1; j+=1
if len(self.res)<j-i-1:
self.res = s[i+1:j]
if not s: return s
n = len(s)
self.res = ''
for i in range(n):
helper(i, i)
helper(i, i+1)
return self.res
# 求解
s = Solution()
s.longestPalindrome('babad')
# return
'bab'
leetcode 6.Z字形变换
class Solution(object):
def convert(self, s, numRows):
if numRows<2: return s
res = ['' for _ in range(numRows)]
start = 0
flag = -1
for c in s:
res[start] += c
if start==0 or start==numRows-1: flag = -flag
start += flag
return ''.join(res)
# 求解
s = Solution()
s.convert('LEETCODEISHIRING', 3)
leetcode 7.整数反转
class Solution(object):
def reverse(self, x):
res = 0
flag = 1 if x>0 else -1
x = str(abs(x))
for i in range(len(x)):
res += int(x[i])*pow(10,i)
return res*flag if -2**31<=res<=2**31-1 else 0
class Solution(object):
def myAtoi(self, str):
import re
s = re.findall(r'^[\+\-]?\d+', str.strip())
if not s:
return 0
elif int(s[0])<=-2**31:
return -2**31
elif int(s[0])>=2**31-1:
return 2**31-1
else:
return int(s[0])
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if not strs: return ''
s1 = min(strs)
s2 = max(strs)
for index, value in enumerate(s1):
if value!=s2[index]:
return s1[:index]
return s1