示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
- 如果你不使用额外的数据结构,会很加分。
思路:
- 遍历数组,用128个bit分别记录128个ASCII码是否出现过。
题解:
bool isUnique(char* astr)
{
unsigned long long highFlag = 0; // ASCII 64-127标志位
unsigned long long lowFlag = 0; // ASCII 0-63标志位
for (char *ch = astr; *ch != NULL; ch++)
{
if (*ch < 64)
{
unsigned long long bitFlag = 1;
bitFlag = bitFlag << (*ch);
if (lowFlag & bitFlag)
{
return false;
}
lowFlag = lowFlag | bitFlag;
}
else
{
unsigned long long bitFlag = 1;
bitFlag = bitFlag << (*ch - 64);
if (highFlag & bitFlag)
{
return false;
}
highFlag = highFlag | bitFlag;
}
}
return true;
}