2 minute read

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