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.
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
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
temp.f95:31:42: 31 | answer(i) = ichar(nums(i)(j:j)) - ichar('0') + 1 | 1 Error: Syntax error in argument list at (1) temp.f95:27:26: 27 | j = index(nums(i), '0', back=.true.) | 1 Error: ‘string’ argument of ‘index’ intrinsic at (1) must be CHARACTER temp.f95:26:31: 26 | do while (k <= len(nums(i))) | 1 Error: ‘string’ argument of ‘len’ intrinsic at (1) must be CHARACTER
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
temp.f95:14:16: 14 | nums(i) = nums(i) / 10 | 1 Error: Dummy argument ‘nums’ with INTENT(IN) in variable definition context (assignment) at (1) temp.f95:21:9: 21 | use separation_digits | 1 Fatal Error: Cannot open module file ‘separation_digits.mod’ for reading at (1): No such file or directory compilation terminated.
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:
Repeat this process for all numbers in the nums array.
#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:
Repeat this process for all numbers in the nums array.