面試題 08 07 無重複字串的排列組合

2022-07-09 02:15:14 字數 916 閱讀 3557

套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...