문제 링크
요약
- 쉬운 문제
최종
결과
- 앞에서부터 순회하며 special 한 놈을 찾아내면 된다.
- Set 을 사용해서 lowercase 와 uppercase 가 모두 나오는지 확인하고, 그리고 중복방지를 위한 set 을 하나 더 사용하면 된다.
#define bms unsigned int
#define CHECK_BMS(target, idx) (((target) >> (idx)) & 0x1)
class Solution {
public:
int numberOfSpecialChars(string word) {
bms lower = 0;
bms upper = 0;
bms special = 0;
int cnt = 0;
for (auto c : word) {
if ('a' <= c && c <= 'z') {
lower |= 1 << (c - 'a');
if (CHECK_BMS(upper, c - 'a') && !CHECK_BMS(special, c - 'a')) {
special |= 1 << (c - 'a');
cnt++;
}
} else {
upper |= 1 << (c - 'A');
if (CHECK_BMS(lower, c - 'A') && !CHECK_BMS(special, c - 'A')) {
special |= 1 << (c - 'A');
cnt++;
}
}
}
return cnt;
}
};- Set 은 간단하게 BMS 사용했다.
