3945 - Digit Frequency Score
Description (leetcode)
You are given an integer n.
The score of n is defined as the sum of d * freq(d) over all distinct digits d, where freq(d) denotes the number of times the digit d appears in n.
Return an integer denoting the score of n.
Example 1:
Input: n = 122
Output: 5
Explanation:
- The digit 1 appears 1 time, contributing
1 * 1 = 1. - The digit 2 appears 2 times, contributing
2 * 2 = 4. - Thus, the score of
nis1 + 4 = 5.
Example 2:
Input: n = 101
Output: 2
Explanation:
- The digit 0 appears 1 time, contributing
0 * 1 = 0. - The digit 1 appears 2 times, contributing
1 * 2 = 2. - Thus, the score of
nis 2.
Constraints:
- 1 <= n <= 109
submission
click to reveal
impl Solution {
pub fn digit_frequency_score(n: i32) -> i32 {
std::iter::successors(Some(n), |n| Some(n / 10))
.take_while(|n| n.is_positive())
.fold(0, |acc, n| acc + n % 10)
}
}