Swift实现:将单个整数转换为整数数组的静态函数需求
实现Swift私有静态函数:将单个Int转为Int数组
嘿,这就帮你搞定这个需求!我准备了两种实现方式,你可以根据自己的偏好选择:
方法一:手动循环处理数字(更直观,适合理解底层逻辑)
这种方式通过数学运算直接操作数字,不需要转换为字符串,逻辑清晰:
private static func formAnArray(_ value: Int) -> [Int] { // 特殊情况处理:输入为0时直接返回[0],避免循环不执行返回空数组 guard value != 0 else { return [0] } var remainingValue = abs(value) // 处理负数输入,确保提取正确的数字序列 var resultArray = [Int]() while remainingValue > 0 { let lastDigit = remainingValue % 10 // 取当前数字的最后一位 resultArray.insert(lastDigit, at: 0) // 插入到数组开头,保证顺序和原数字一致 remainingValue = remainingValue / 10 // 移除已经处理过的最后一位 } return resultArray }
逻辑说明:
- 先处理输入为0的特殊场景,避免循环不执行导致返回空数组;
- 使用
abs(value)处理负数输入,如果你只需要支持正数,可以去掉这一步,直接赋值remainingValue = value; - 通过
%10取最后一位数字,插入数组开头(因为取模得到的是从右到左的数字,插入开头能保证顺序和原数字一致); - 每次循环后将数字除以10,逐步去掉已处理的最后一位,直到数字变为0。
方法二:字符串转换(代码更简洁)
如果追求代码简洁性,可以利用Swift的字符串和高阶函数快速实现:
private static func formAnArray(_ value: Int) -> [Int] { // 转成字符串后遍历每个字符,再转换为Int,compactMap自动过滤无效转换(这里不会出现) String(abs(value)).compactMap { Int(String($0)) } }
逻辑说明:
- 先将Int转为字符串(同样用
abs(value)处理负数); - 使用
compactMap遍历每个字符,将字符转为Int;compactMap比map更安全,能自动过滤掉转换失败的元素(这里因为是数字字符,所以不会有失败情况); - 一行代码搞定,非常简洁。
测试验证:
两种方法都能满足你的示例需求:
- 输入
1234→ 返回[1, 2, 3, 4] - 输入
8765→ 返回[8, 7, 6, 5] - 输入
0→ 返回[0] - 输入
-567→ 返回[5, 6, 7](如果保留abs(value)的话)
内容的提问来源于stack exchange,提问作者Evgeniy Kleban
相关产品推荐
相关产品推荐

