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 <= 10001 <= nums[i] <= 105program 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.