leetcode:字母大小寫全排列
給定乙個字串s,通過將字串s中的每個字母轉變大小寫,我們可以獲得乙個新的字串。返回所有可能得到的字串集合。
示例:輸入: s = 「a1b2」
輸出: [「a1b2」, 「a1b2」, 「a1b2」, 「a1b2」]
輸入: s = 「3z4」
輸出: [「3z4」, 「3z4」]
輸入: s = 「12345」
輸出: [「12345」]
注意:
s 的長度不超過12。
s 僅由數字和字母組成。
一開始直接把回溯演算法的模板寫了出來,後來發現其實根本不需要多出乙個記錄選擇的陣列,因為這次的題目不需要打亂原先字串的排列順序,直接在原先的排列順序上進行選擇字母大小寫即可,所以處在選擇節點的時候,可以將選擇陣列看成是[「a」,「a」],故在實現回溯演算法的時候,for迴圈只需要執行兩次,重點是層數和陣列的第幾位要對應起來,檢視s[layer]是否是字母,若不是的話,直接執行下一層的回溯,執行完畢後break,防止重複執行,若是字母的話,再判斷這是第幾次迴圈,第一次迴圈取小寫字母(也可以取大寫,順序不同罷了),第二次迴圈取大寫字母,之後都執行回溯演算法,直到層數和字串長度相等。
以下是我的**:
# include
# include
using
namespace std;
class
solution
void
trackback
(vector
&result,string tempstring,string s,
int layer)
for(
int i=
0;i<
2;i++)if
(i==
0) tempstring[layer]
=(s[layer]
<
97?s[layer]+32
:s[layer]);
else
if(i==
1) tempstring[layer]
=(s[layer]
>=
97?s[layer]-32
:s[layer]);
trackback
(result,tempstring,s,layer+1)
;}}}
;
還有一點就是要知道a在ascii中對應的值為97,a對應的值為65,直到差值之後就好轉化了。 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...