Leetcode problem 106 - Find the K-Beauty of a Number
The k-beauty of an integer num is defined as the number of substrings of num when it is read as a string that meet the following conditions:
It has a length of k. It is a divisor of num. Given integers num and k, return the k-beauty of num.
Note:
Leading zeros are allowed. 0 is not a divisor of any value. A substring is a contiguous sequence of characters in a string.
Example 1:
Input: num = 240, k = 2 Output: 2 Explanation: The following are the substrings of num of length k:
- “24” from “240”: 24 is a divisor of 240.
- “40” from “240”: 40 is a divisor of 240. Therefore, the k-beauty is 2. Example 2:
Input: num = 430043, k = 2 Output: 2 Explanation: The following are the substrings of num of length k:
- “43” from “430043”: 43 is a divisor of 430043.
- “30” from “430043”: 30 is not a divisor of 430043.
- “00” from “430043”: 0 is not a divisor of 430043.
- “04” from “430043”: 4 is not a divisor of 430043.
- “43” from “430043”: 43 is a divisor of 430043. Therefore, the k-beauty is 2.
Constraints:
1 <= num <= 109 1 <= k <= num.length (taking num as a string)
/**
* @param {number} num
* @param {number} k
* @return {number}
*/
var divisorSubstrings = function (num, k) {
// Convert the given number 'num' to a string
let numStr = num.toString();
// Initialize an empty substring 'subStr'
let subStr = "";
// Initialize a counter variable 'count' to keep track of valid substrings
let count = 0;
// Iterate through each possible substring of length 'k' in 'numStr'
for (let i = 0; i <= numStr.length - k; i++) {
// Extract the substring of length 'k' starting from index 'i'
subStr = numStr.substring(i, i + k);
// Check if the original number 'num' is divisible by the numerical value of 'subStr'
if (num % Number(subStr) === 0) {
// If divisible, increment the counter
count++;
}
}
// Return the final count of valid substrings
return count;
};
The time complexity of this code is O(n), where n is the length of the input number converted to a string. This is because the code iterates through each character in the string once.
The space complexity of this code is O(1), as it only uses a constant amount of additional space to store the variables numStr, subStr, and count.
Leave a comment