LeetCode題解 17 電話號碼的字母組合

2021-09-25 14:10:44 字數 937 閱讀 6263

1、這題是個求解子排列的問題,但是又不是單純的子集,而是子集中有子集,而且是字典序有序排列,used標識其實可以去除

2、使用map存放鍵值對,使用位串list【true,false,true,false,true,…】表示digits【0,1,2,3,4,5…】中該位是否被使用,還可以簡化下為二進位制表示所有可能的集合,也就是用 & 與的方式表示0,1,10,11,100,101…共2的(n-1)次方個數字子集,但這題是用的字典序

3、map中取key為integer對應的value時 先寫成dic.get(digits.charat(i)),結果string報空指標,以為沒強轉改為dic.get((int)digits.charat(i)),最後發現應該是將asc碼的char轉為int

class solution 

//字典序,可以不用used,多餘部分

boolean used =new boolean[digits.length()];

dic.put(2,"abc");

dic.put(3,"def");

dic.put(4,"ghi");

dic.put(5,"jkl");

dic.put(6,"mno");

dic.put(7,"pqrs");

dic.put(8,"tuv");

dic.put(9,"wxyz");

stringbuilder sb = new stringbuilder();

sub(sb,digits,used,0);

return ret;

}//這裡是字典序,需要用index表示當前位置

void sub(stringbuilder sb, string digits, boolean used ,int index)

for(int i=index ; i}}}

}

Leetcode17 電話號碼組合

leetcode17 號碼組合 給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 思路 大家都能想到,我每次從裡面選擇乙個數,然後把所有的可能...

17號 18號總結

這兩天學習了毛毛蟲演算法 取尺,就如兩個指標乙個指向開頭,乙個指向後面的某個數,這兩個指標之間的長度又形象的比喻成毛毛蟲的身體長度,因為每當頭開始移動,尾巴也會隨著往後移動。就如做的那道題,樣例輸入乙個長度位3的數字,即代表毛毛蟲的長度,每次頭網前移動,尾巴也會隨著網前移動。while w n el...

LeetCode題目 17 電話號碼的字母組合

class solution 建立list集合用來存放答案 list list newarraylist 主函式 public list lettercombinations string digits 遞迴函式用來連線字串,str為上乙個連線的字串,digits為上乙個切割後剩下的字串 priva...