- Use two integers as bit masks:
- lower stores lowercase letters present.
- upper stores uppercase letters present.
- Traverse each character in the string:
- If lowercase, set its corresponding bit in lower.
- If uppercase, set its corresponding bit in upper.
- Perform lower & upper:
- Common set bits represent characters present in both lowercase and uppercase forms.
- Use Integer.bitCount() to count total common bits and return the answer.
class Solution {
public int numberOfSpecialChars(String word) {
int lower = 0, upper = 0;
for (char c : word.toCharArray()) {
if (Character.isLowerCase(c))
lower |= 1 << (c - 'a');
else
upper |= 1 << (c - 'A');
}
return Integer.bitCount(lower & upper);
}
}
Top comments (0)