如何在Dart中实现多整数输入及反转功能?
在Dart中实现多整数反转的方法
下面提供两种常用的整数反转实现方式,同时支持处理多个整数输入的场景:
方法一:基于字符串反转(简单直观)
利用字符串反转的思路,同时处理整数的正负符号,步骤清晰易理解:
- 将整数转为字符串
- 分离负号(如果存在)
- 反转数字部分的字符串
- 将反转后的字符串转回整数,恢复负号
代码示例:
int reverseInt(int num) { if (num == 0) return 0; String numStr = num.toString(); String sign = ''; if (numStr.startsWith('-')) { sign = '-'; numStr = numStr.substring(1); } String reversedStr = sign + numStr.split('').reversed.join(''); return int.parse(reversedStr); } // 批量处理多整数输入 List<int> reverseMultipleInts(List<int> nums) { return nums.map(reverseInt).toList(); } // 测试示例 void main() { List<int> input = [123, -456, 7890, 0]; List<int> reversed = reverseMultipleInts(input); print(reversed); // 输出: [321, -654, 987, 0] }
方法二:纯数学计算法(无字符串操作)
通过取模和整除运算逐位提取数字,重新构建反转后的整数,适合不想依赖字符串操作的场景:
- 记录整数的正负符号
- 将整数转为绝对值进行处理
- 循环取最后一位数字,累加到反转结果中
- 恢复符号并返回结果
代码示例:
int reverseIntMath(int num) { if (num == 0) return 0; int sign = num > 0 ? 1 : -1; int absNum = num.abs(); int reversed = 0; while (absNum > 0) { int lastDigit = absNum % 10; reversed = reversed * 10 + lastDigit; absNum = absNum ~/ 10; } return reversed * sign; } // 批量处理多整数输入 List<int> reverseMultipleIntsMath(List<int> nums) { return nums.map(reverseIntMath).toList(); } // 测试示例 void main() { List<int> input = [123, -456, 7890, 0]; List<int> reversed = reverseMultipleIntsMath(input); print(reversed); // 输出: [321, -654, 987, 0] }
注意事项
- 整数反转后如果超出Dart中
int的取值范围,会抛出异常。若需处理大数场景,可以改用BigInt类型。 - 输入的0反转后仍为0,反转产生的前导零会被自动忽略(整数本身不保留前导零)。
内容的提问来源于stack exchange,提问作者Safdar Ali
相关产品推荐
相关产品推荐

