You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中实现多整数输入及反转功能?

在Dart中实现多整数反转的方法

下面提供两种常用的整数反转实现方式,同时支持处理多个整数输入的场景:

方法一:基于字符串反转(简单直观)

利用字符串反转的思路,同时处理整数的正负符号,步骤清晰易理解:

  1. 将整数转为字符串
  2. 分离负号(如果存在)
  3. 反转数字部分的字符串
  4. 将反转后的字符串转回整数,恢复负号

代码示例:

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]
}

方法二:纯数学计算法(无字符串操作)

通过取模和整除运算逐位提取数字,重新构建反转后的整数,适合不想依赖字符串操作的场景:

  1. 记录整数的正负符号
  2. 将整数转为绝对值进行处理
  3. 循环取最后一位数字,累加到反转结果中
  4. 恢复符号并返回结果

代码示例:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:46:39