Algorithm
804. 唯一摩爾斯密碼詞
import java.util.TreeSet;
public class Solution {
public int uniqueMorseRepresentations(String[] words) {
String[] code = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
TreeSet<String> set = new TreeSet<>();
for (String word: words) {
StringBuilder res = new StringBuilder();
for (int i = 0; i < word.length(); i++) {
res.append(code[word.charAt(i) - 'a']);
}
set.add(res.toString());
}
return set.size();
}
}
Review
Tip
關于搜索
- 不要給信息歸檔,用的時候去搜索就行了
- 搜索的關鍵詞加上引號,這樣的話引號內的內容是作為一個完整短語出現的
- 如在谷歌輸入框輸入
"Paris hotel"~cheap
,這是告訴Google網頁中要包含cheap或cheap的同義詞。注意~和cheap之間不要有空格 -
"paris hotels"affordable OR cheap OR budget
,OR是一個標準的搜索操作符,意思是搜索結果中至少會包含條件中的一個 -
"手機" -錘子
,搜索除錘子以外的所有手機相關信息。要注意手機和-之間要有空格,-和錘子之間不要有空格 -
apm site:www.lxweimin.com
在指定網站搜索相關內容 -
"年度總結" filetype:ppt
搜索包含關鍵詞的制定文件類型的內容 -
1人民幣 in 美元
度量衡轉換
Share
內存對齊:
將數據放在內存上時,對于存放數據的地址有對齊的限制。
對齊是指將數據放在內存上時,必須放置在特定數值的倍數的地址上。例如,“必須放置在4的倍數的地址上”。
最近設計的CPU中有著所有的數據都必須放置在該數據大小的倍數的地址上這樣的限制。也就是說2字節的數據必須存放在2的倍數的地址上,4字節的數據必須存放在4的倍數的地址上。違反上述限制就會發生總線錯誤,導致程序異常終止。
另外,某些OS中調用外部函數時的棧幀必須以16字節為邊界排列,例如Windows和Max OS X。
將結構體存放在內存上時,其成員的值由前向后依次排列。另外,結構體中各成員有著和各成員的數據類型的大小一樣的對齊限制。即2字節的數據必須存放在2的倍數的地址上,4字節的數據必須存放在4的倍數的地址上。這樣一來,像下面這樣大小不一的成員在排列時就可能形成間隙,這樣的間隙稱為填充(padding)。
struct s {
char a;
char b;
int c;
}
0到1字節存放a,1到2字節存放b,4到8字節存放c,2到4字節就形成了間隙。