空格替換練習題
題幹:
給定乙個字串str,將其中所有的空格字元替換成』%20』,假設str後面有足夠的空間
一般思路:
1、遍歷發現空格數量,計算替換後的總長度
2、從右往左依次拷貝字元,遇到空格換為』%20』即可。
python 可以使用 replace 函式
class solution():
def replace(self,strs):
if strs=='' or len(strs)==0:
return strs
if ' ' in strs:
strs = strs.replace(' ','%20')
return strs
合法括號序列判斷練習題題幹:
給定乙個字串str,判斷是不是整體有效的括號字串
舉例:
str=』()』,返回true str=』(()())』,返回true
str=』(())』,返回true
str=』())』,返回false,str=』()(『,返回false
解題思路:
設定乙個num,表示』(『出現次數與」)」出現次數的差值
遍歷的過程中遇到』(『就num++
遇到』)』就num–
遍歷過程中如果num<0,則直接返回false
如果一直沒有出現num<0,就一直遍歷下去
遍歷完成後,如果num==0,則返回true,否則返回false
class solution():
def judge(self,s):
if '(' not in s and ')' not in s:
return true
num = 0
for i in range(len(s)):
if s[i] == '(':
num += 1
elif s[i] == ')':
num -= 1
if num<0:
return false
if num == 0:
return true
else:
return false
注意:
此題也不可以判斷對稱性,如 ')(' 不是合法組合
最長無重複字元子串練習題
題幹:
給定乙個字串a,請返回它的最長無重複字元子串長度。保證a中字元全部為小寫英文本元,且長度小於等於500。
要求最優解為時間複雜度為o(n),空間複雜度為o(n)
舉例:
str=』abcd』,返回4
str=』abcb』,最長無重複字元子串為』abc』,返回3
解題思路:
建立乙個字典,其中start表示當前字元最後一次出現的位置
如果字典中已經存在當前元素,就更改start的位置
如果不存在,就新增一對新的鍵值對,其中key表示元素,value表示當前元素的下標
class solution():
def longest_no_repeat_substr(self,s):
if s is none or len(s)==0:
return 0
d = {}
start = 0
max_length = 0
for i in range(len(s)):
if s[i] in d and d[s[i]]>=start:
start = d[s[i]] + 1
else:
max_length = max(max_length,i-start+1)
d[s[i]] = i
return max_length
直通BAT面試演算法精講 字串(1)
字串面試題的特點 1.廣泛性 1 字串可以看做字元型別的陣列,與陣列排序 查詢 調整有關 2 很多其他型別的面試題可以看做字串型別的面試題 2.需要掌握的概念 1 回文 2 子串 連續 3 子串行 不連續 4 字首樹 trie樹 5 字尾樹和字尾陣列 6 匹配 7 字典序 3.需掌握的操作 1 與陣...
直通BAT面試演算法精講 排序(1)
注 所有的 都是用python實現的,都是自己寫的,可能有些地方不太完善 時間複雜度 o n 2 空間複雜度 o 1 思想 依次訪問元素,逆序就置換。一趟排序後最大 小 的被置換到最後 def bubble sort arr,n ifnot arr return none for i in rang...
直通BAT面試演算法精講 排序(4)
荷蘭國旗問題 三色排序問題 對只包含0,1,2的整數陣列進行排序,要求使用交換 原地排序,而不是利用計數進行排序,做到0全在陣列左邊,1在中間,2在右邊 本題主要過程和快排劃分過程類似 測試用例 arr 1,1,0,0,2,1,1,0 輸出 0,0,0,1,1,1,1,2 解題思路 在陣列左側設定乙...