Which is the lowest flag switched on
A permissions field packs each right into its own bit. An audit reports the position of the lowest right that is granted.
- Bits are numbered from 0, starting at the least significant end.
- Return the position of the lowest bit that is set.
- A field with nothing granted returns -1.
- The field is never negative.
lowestFlag(rights: int) → int
C++ needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.
Where you start
int lowestFlag(int rights) {
}
Worked examples
| Call | Result |
|---|---|
lowestFlag(12) | 2 |
lowestFlag(1) | 0 |
lowestFlag(0) | -1 |
lowestFlag(8) | 3 |
Hint
The expression n & -n leaves only the lowest set bit standing. Counting how far that has to shift down gives its position.
Reference solution in C++
int lowestFlag(int rights) {
if (rights == 0) return -1;
int position = 0, field = rights;
while ((field & 1) == 0) {
field >>= 1;
position++;
}
return position;
}