c*********g 发帖数: 22 | 1 大家好,想请教大家一个问题。
在网上看到有人这么解题:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(s.empty()) return 0;
int checker = 0, val =0, max = 0, j =0, count = 0;
for(int i=0; i
{
j = i;
while(j
{
val = s[j]-'a';
if ((checker & (1<0) break;
checker |= 1 << val;
j++;
count++;
}
if(count > max) max = count;
checker = 0;
count = 0;
}
return max;
}
};
---------
checker |= 1 << val; 这句不太理解,请问高手如何理解?十分感谢。 |
n****l 发帖数: 1739 | 2 checker |= 1 << val;
checker is used as a bit array, above code is to set the val:th bit.
【在 c*********g 的大作中提到】 : 大家好,想请教大家一个问题。 : 在网上看到有人这么解题: : class Solution { : public: : int lengthOfLongestSubstring(string s) { : // Start typing your C/C++ solution below : // DO NOT write int main() function : if(s.empty()) return 0; : int checker = 0, val =0, max = 0, j =0, count = 0; : for(int i=0; i
|
c*********g 发帖数: 22 | 3 Thanks for your reply. 请问VAL的作用是什么? |
n****l 发帖数: 1739 | 4 就是看一个字符(a - z)是不是出现过了。
【在 c*********g 的大作中提到】 : Thanks for your reply. 请问VAL的作用是什么?
|
c*********g 发帖数: 22 | 5 val = s[j]-'a'; 出来后是一个数 ,然后下面这句val左移一位,相当于乘以2,这为
何要判断 (1<0呢?
if ((checker & (1<0)
thanks |
n****l 发帖数: 1739 | 6 << : Binary Left Shift Operator. The left operands value is moved left by
the number of bits specified by the right operand.
这个是查val:th bit是不是set了。 你可能要看一下:
http://stackoverflow.com/questions/47981/how-do-you-set-clear-a
【在 c*********g 的大作中提到】 : val = s[j]-'a'; 出来后是一个数 ,然后下面这句val左移一位,相当于乘以2,这为 : 何要判断 (1<0呢? : if ((checker & (1<0) : thanks
|