作者yule1224 (我是B型)
看板java
標題[問題] <<和|=的意思
時間Thu Mar 6 04:36:26 2014
現在在看Cracking The Coding Interview
裡面一段java看不太懂
1<<val 是不是指 val所有位元向左邊移一個位子,然後最右邊的放入0
為什麼要用(1<<val)>0 來當做檢驗字母有沒有重複的其中一項因素呢?
還有我也看不太懂 checker |=(1<<val);
這個程式是用來判斷string裡的char是不是都不相同
public boolean isUniqueChars(String str){
if (str.length()> 256) return false;
int checker = 0;
for (int i=0; i<str.length(); i++){
int val=str.charAt(i) - 'a';
if((checker & (1<<val))>0{
return false;
}
checker |= (1<<val);
}
return true;
謝謝
--
恬靜,閑適安靜,很美好的寧靜
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 135.0.163.188
※ 編輯: yule1224 來自: 135.0.163.188 (03/06 04:44)
※ 編輯: yule1224 來自: 135.0.163.188 (03/06 04:45)
1F:→ bitlife:1<<val是1左移val個bit,程式原理是用bit mask記錄已出現字 03/06 07:41
2F:→ bitlife:元,a記在第0bit,b第1bit依此類推,某bit為1代表字元已出現 03/06 07:44
3F:推 asilzheng:應該去查 bitwise operation 03/06 09:20
4F:→ realmeat:這程式碼漏個左括號不能跑 03/06 10:08
6F:→ missShark:bitops.html 03/07 01:21
謝謝
另外 我先前有寫錯,是要判斷不同的char 不是字母
※ 編輯: yule1224 來自: 135.0.163.188 (03/07 01:26)
7F:→ tkcn:我找了書來看,這一題規定只有 a-z,也沒有開頭 >256 那行 03/07 01:49
8F:→ tkcn:若規定只會有 a-z,改成判斷 >26 會比較合理 03/07 01:51
9F:→ danny8376:>256是限制字串長度 跟判斷範圍無關啊 樓上... 03/07 11:46
10F:→ tkcn:前提滿足只有 a-z 的情況下,檢查是否 >26 是一種快速判斷 03/07 11:51
11F:→ realmeat:java在位元運算超過範圍的實作, 建議大家try一下 03/07 13:54