套dfs回溯模板,模板參考:
class solution(object):
def __init__(self):
# res作為返回值,設為全域性變數
self.res =
def permutation(self, s):
""":type s: str
:rtype: list[str]
"""# 獲取原串的長度
n = len(s)
# 暫存此趟迴圈的組合串
temp =
# 初始化訪問標記陣列
visit = [0 for _ in range(n)]
# 呼叫函式
self.dfs(s, temp, visit, n)
return self.res
def dfs(self, str, temp, visit, n):
# 定義遞迴出口:temp長度與原串相等,則乙個新的答案誕生
if len(str) == len(temp):
# 否則,遍歷原串,逐個取得字元拼湊temp
else:
for i in range(n):
# 當且僅當當前字元未被訪問過
if not visit[i]:
# 取得字元拼湊temp
# 修改訪問標記陣列
visit[i] = 1
# 遞迴
self.dfs(str, temp, visit, n)
# 回退
temp.pop(-1)
# 標記陣列也要回退
visit[i] = 0
面試題 08 07 無重複字串的排列組合
題幹 無重複字串的排列組合。編寫一種方法,計算某字串的所有排列組合,字串每個字元均不相同。示例1 輸入 s qwe 輸出 qwe qew wqe weq ewq eqw 示例2 輸入 s ab 輸出 ab ba 字元都是英文本母。字串長度在 1,9 之間。思路1.結束條件 當所有字元都被選取後,即記...
面試題 最長不含重複字元的子字串
請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。假設字串中只包含 a z 的字元。例如,在字串 arabcacfr 中,最長的不含重複字元的子字串是 acfr 長度為4。思路 常規套路的話,先求有多少個子字串,再看看是否有重複字元,那麼一套下來就要o n 3 有點多,那麼就用...
字串高頻面試題。
一 題目 把乙個01 只包含0和1的串 串進行排序。可以交換任意兩個位置,求最少交換的次數。方法 仿造快速排序裡面的partition的過程。最左邊的0和1是沒有意義的,從左到右掃到第乙個1,從右到左掃到第乙個0,然後交換,然後繼續掃下去,就ok啦。include include define ma...