给你一个正整数数组 nums ,请你返回一个数组 answer ,你需要将 nums 中每个整数进行数位分割后,按照 nums 中出现的 相同顺序 放入答案数组中。
对一个整数进行数位分割,指的是将整数各个数位按原本出现的顺序排列成数组。
比方说,整数 10921 ,分割它的各个数位得到 [1,0,9,2,1] 。
示例 1:
输入:nums = [13,25,83,77]
输出:[1,3,2,5,8,3,7,7]
解释:
- 分割 13 得到 [1,3] 。
- 分割 25 得到 [2,5] 。
- 分割 83 得到 [8,3] 。
- 分割 77 得到 [7,7] 。
answer = [1,3,2,5,8,3,7,7] 。answer 中的数字分割结果按照原数字在数组中的相同顺序排列。
示例 2:
输入:nums = [7,1,3,9]
输出:[7,1,3,9]
解释:nums 中每个整数的分割是它自己。
answer = [7,1,3,9] 。
class Solution {public int[] separateDigits(int[] nums) {StringBuilder sb = new StringBuilder();// 遍历原数组,转换为字符串for (int num : nums) {sb.append(num);}int len = sb.length();int[] rs = new int[len];// 遍历字符串,获取各字符的值for (int i = 0; i < len; i++) {rs[i] = sb.charAt(i) - '0';}return rs;}
}
说明:题中很明显能想到通过遍历每个 元素来求解的方法,只是需要注意优化的时候,rs[i] = sb.charAt(i) - '0'这句:后半部分都是ASC码进行的运算,所以此时需要结合ASC码来判断,只有当数字减去‘0’对应的ASC码后,才能得到对应的数字。eg:‘1’ --> 49,‘0’--> 48,1 = 49 - 48.