(六)驗證回文串
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。
說明:本題中,我們將空字串定義為有效的回文串。
示例 1:
輸入: 「a man, a plan, a canal: panama」
輸出: true
示例 2:
輸入: 「race a car」
輸出: false
def huiwen(self, s):
if not s:
return true
s_filter = ''.join(filter(str.isalnum, s)).lower()
return s_filter[::-1] == s_filter
(七)分割回文串
給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。
返回 s 所有可能的分割方案。
示例:輸入: 「aab」
輸出:[
[「aa」,「b」],
[「a」,「a」,「b」]
]
def parition(self, s):
if len(s) == 0:
return
if len(s) == 1:
return [[s]]
res =
for i in range(1, len(s) + 1):
left = s[: i]
right = s[i: ]
if left == left[::-1]:
right = self.partition(right)
for i in range(len(right)):
return res
(八) 單詞拆分
給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典**現的單詞。
說明:拆分時可以重複使用字典中的單詞。
你可以假設字典中沒有重複的單詞。
示例 1:
輸入: s = 「leetcode」, worddict = [「leet」, 「code」]
輸出: true
解釋: 返回 true 因為 「leetcode」 可以被拆分成 「leet code」。
示例 2:
示例 3:
輸入: s = 「catsandog」, worddict = [「cats」, 「dog」, 「sand」, 「and」, 「cat」]
輸出: false
解題思路:(1)儲存字典裡最長的單詞的長度 max_len(2)從頭搜尋字串的max_len範圍,因為超出max_len範圍的肯定不在字典裡。如果存在,則將字串的index儲存在res中 (3)如果字串遍歷完了,則res[-1] == len(s),返回結果為true
def split(self, s, worddict):
res, max_len = [0], 0 # res儲存字串的index
for word in worddict:
max_len = max(max_len, len(word))
for i in range(1, len(s)+1):
for j in res:
if i-j <= max_len and s[j: i] in worddict:
break
return res[-1] == len(s)
新浪筆試程式設計題三
一維點對問題 集合s中有直線上的n個點,n 1 實現函式求出n個點之間的最短距離,並寫出時間複雜度 先使用排序演算法將點的座標排序,然後求相鄰兩點之間的最短距離即可,快排時間複雜度較低 public class main3 nums i x return i public void quicksor...
筆試 程式設計題
1.class a class b public a int main 2.int main 3.int func int a int main little endian int main char p char a 2 printf 0x x,0x x,0x x p 1 p,short p re...
筆試程式設計三
1.編寫函式,實現字串逆序。char ptr abcdefg int size strlen ptr char str new char size 1 int i 0,j size 1 for i 0 istr i ptr j cout2.通過程式設計實現輸出2 的1000次方。define max...