作者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