A number is said self-descriptive if its digit at the i-th position is the counter for the i-digit in the number itself.
21200 is self-descriptive, since it has 2 zeros, 1 ones, 2 twos, 0 threes, and 0 fours.
Here is a possible C++ implementation:
bool isSelfDescr(const std::string& input) { if(input.empty() || input.size() > 10) // 1 return false; for(unsigned i = 0; i < input.size(); ++i) // 2 if(std::count(input.begin(), input.end(), '0' + i) != input[i] - '0') return false; return true; }1. I am expecting a 10-based number, that means it can't have more than 10 digits - and it shouldn't be empty.
2. For each digit in the number, I count how many of them are in the string, using the STL algorithm count(), and I compare the result against the number in that position.
No comments:
Post a Comment