前不久在iteye上看到一題演算法題,看了上面很多了給出了不少方案,但大多都是**一大堆,比較難理解,這裡我也寫了乙個,歡迎各位高手指點。
題目:給定一系列的單詞,要求把字母個數和字母都相同的單詞規類為一組。比如 top,****,you,oh,yes,pot,foot,toof,因為top和pot兩個單詞字母的數量相同,而且它們包括的字母都是一樣的,只是字母順序不一樣,這樣的單詞我們都歸為一組。foot與toof也認為是同一組。
思路:第一步,得到單詞系列的陣列,陣列的元素是乙個單詞。
第二步,建立乙個map,再遍歷每個陣列。
第三步,讀取每個元素,將其轉化為char陣列,將其排序後,再轉化為string 作為map的key值,把未排序的元素值作為value 存放到map中。存放時先檢查該key對應的元素是否已經存在,如果存在,就將原來的值取出,再上當前值重新放回map中。
第四步,遍歷map的所所有value,即可以得到分組後的結果。
string str="top,****,you,oh,yes,pot,foot,toof";
string strtem=str.split(",");
map map=new hashmap();
for(int i=0;i我的**,有勞各位參觀參觀
一道簡單的演算法題
題目 統計給定數字中,值為1的二進位制位的數量。如果是陣列呢?int getbitcount unsigned int num return count 第一種想法比較簡單,從最後一位開始,比較是否為1,如果為1,就計數器加一。迴圈次數固定,32次。但是這種方法有乙個地方需要注意,那就形參必須為un...
解一道簡單的演算法題
原題是這樣的 乙個未排序整數陣列,有正負數,重新排列使負數排在正數前面,並且要求不改變原來的正負數之間相對順序。比如 input 1,7,5,9,12,15 ans 5,12,1,7,9,15 且要求時間複雜度o n 空間o 1 我實現的解法 解法1 不考慮時間和空間複雜度 則每次找到乙個正數,取出...
一道演算法題,求更好的解法
問題 阿里2010年實習 給定乙個數 t,以及 n個整數,在這 n個整數中找到相加之和為 t的所有組合,例如 t 4 n 6,這6 個數為 4,3,2,2,1,1 這樣輸出就有 4個不同的組合,它們的相加之和為4 4,3 1,2 2,and 2 1 1 請設計乙個高效演算法實現這個需求。下面,給出一...