Separate the Digits in an Array

🏠 ⬅️ ➡️

Given an array of positive integers nums, return an array answer that consists of the digits of each integer in nums after separating them in the same order they appear in nums.

To separate the digits of an integer is to get all the digits it has in the same order.

  • For example, for the integer 10921, the separation of its digits is [1,0,9,2,1].

Example 1:

Input: nums = [13,25,83,77] Output: [1,3,2,5,8,3,7,7] Explanation: - The separation of 13 is [1,3]. - The separation of 25 is [2,5]. - The separation of 83 is [8,3]. - The separation of 77 is [7,7]. answer = [1,3,2,5,8,3,7,7]. Note that answer contains the separations in the same order.

Example 2:

Input: nums = [7,1,3,9] Output: [7,1,3,9] Explanation: The separation of each integer in nums is itself. answer = [7,1,3,9].

Constraints:

  • 1 <= nums.length <= 1000
  • 1 <= nums[i] <= 105

Note: This problem is from LeetCode.
Compiled
Executed
Correct
program main
    implicit none

    integer, parameter :: n = 4
    integer, dimension(n) :: nums = (/ 13, 25, 83, 77 /)
    integer, dimension(n) :: answer
    integer :: i

    call solve(nums, answer)

    do i = 1, n
        write (*, '(I0)') answer(i)
    end do

contains

    subroutine solve(nums, answer)
        implicit none
        integer, intent(in) :: nums(:)
        integer, intent(out) :: answer(:)

        integer :: i, j, k

        do i = 1, size(nums)
            k = 1
            do while (k <= len(nums(i)))
                j = index(nums(i), '0', back=.true.)
                if (j == 0) then
                    exit
                end if
                answer(i) = ichar(nums(i)(j:j)) - ichar('0') + 1
                nums(i) = nums(i)(1:j-1) // nums(i)(j+1:)
                k = k + 1
            end do
        end do

    end subroutine solve

end program main
Compiled
Executed
Correct
module separation_digits
    implicit none
    contains
    function separate_digits(nums) result(answer)
        integer, intent(in) :: nums(:)
        integer :: answer(size(nums))
        integer :: i, j, digit
        do i = 1, size(nums)
            j = 1
            do while (nums(i) > 0)
                digit = mod(nums(i), 10)
                answer(j) = digit
                j = j + 1
                nums(i) = nums(i) / 10
            end do
        end do
    end function separate_digits
end module separation_digits

program test_separation_digits
    use separation_digits
    implicit none
    integer, parameter :: nums(4) = [13, 25, 83, 77]
    integer :: answer(size(nums))
    answer = separate_digits(nums)
    write (*,*) 'Answer: ', answer
end program test_separation_digits
🌐 Data from online sources
def separate_digits(nums):
    answer = []
    for num in nums:
        digits = [int(d) for d in str(num)]
        answer.extend(digits)
    return answer
For each number num in the nums array:
  1. Convert the number to its string representation.
  2. Iterate through the string and extract the digits, appending them to the answer array.

Repeat this process for all numbers in the nums array.

🌐 Data from online sources
#include <vector>

std::vector<int> separateDigits(const std::vector<int>& nums) {
    std::vector<int> answer;
    for(auto num : nums) {
        std::vector<int> digits;
        while(num) {
            digits.insert(digits.begin(), num % 10);
            num /= 10;
        }
        answer.insert(answer.end(), digits.begin(), digits.end());
    }
    return answer;
}
For each number num in the nums array:
  1. Convert the number to its string representation.
  2. Iterate through the string and extract the digits, appending them to the answer array.

Repeat this process for all numbers in the nums array.