C Leetcode784 字母大小寫全排列

2021-09-16 12:44:54 字數 711 閱讀 2047

題目

給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。返回所有可能得到的字串集合。

示例:輸入: s = 「a1b2」

輸出: [「a1b2」, 「a1b2」, 「a1b2」, 「a1b2」]

輸入: s = 「3z4」

輸出: [「3z4」, 「3z4」]

輸入: s = 「12345」

輸出: [「12345」]

注意:s 的長度不超過12。

s 僅由數字和字母組成。

思路

1、深度優先搜尋。從頭開始遍歷字串s,如果遇到字母,將其分成兩路,一路不變,一路改變大小寫,如果是數字,則保持不變;遞迴進行,最後得到所有的結果。將s與1<<5異或,可將其進行大小寫轉換。

實現方法

一、深度優先搜尋

class solution 

void dfs(string &s,int k,vector&res)

dfs(s,k+1,res);

if(!isalpha(s[k])) return;

s[k] ^= (1<<5); //大小寫轉換

dfs(s,k+1,res);

s[k] ^= (1<<5); //將s恢復

}};

784 字母大小寫全排列

給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。返回所有可能得到的字串集合。示例 輸入 s a1b2 輸出 a1b2 a1b2 a1b2 a1b2 輸入 s 3z4 輸出 3z4 3z4 輸入 s 12345 輸出 12345 注意 s 的長度不超過12。s 僅由數字和...

784 字母大小寫全排列

給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。返回所有可能得到的字串集合。示例 輸入 s a1b2 輸出 a1b2 a1b2 a1b2 a1b2 輸入 s 3z4 輸出 3z4 3z4 輸入 s 12345 輸出 12345 注意 s 的長度不超過12。s 僅由數字和...

784 字母大小寫全排列

給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。返回所有可能得到的字串集合。示例 輸入 s a1b2 輸出 a1b2 a1b2 a1b2 a1b2 輸入 s 3z4 輸出 3z4 3z4 輸入 s 12345 輸出 12345 class solution void d...