|
楼主 |
发表于 2025-3-7 19:38:45
|
显示全部楼层
c# shuffle算法得出的数组,按照它们的下标顺序组合成一个整数。比如数组是[3,1,2],下标0是3,1是1,2是2,组合成整数312
实现步骤
将数组元素转换为字符串:使用 string.Join 直接拼接数组元素。
字符串转整数:使用 int.Parse 或 int.TryParse 确保转换安全。
- using System;
- public class Program
- {
- public static void Main()
- {
- int[] shuffledArray = {3, 1, 2};
-
- // 将数组元素拼接为字符串
- string combined = string.Join("", shuffledArray);
-
- // 转换为整数
- int result = int.Parse(combined);
-
- Console.WriteLine(result); // 输出:312
- }
- }
复制代码
关键点说明
string.Join("", array):
将数组元素直接拼接成一个连续字符串(例如 [3,1,2] → "312"),无需显式遍历数组。
int.Parse 的安全性问题:
如果数组可能包含非数字字符(如 ['a', 2])或空数组,建议改用 int.TryParse 避免异常。
超大整数(超过 int 范围)需改用 long.Parse 或 BigInteger。
扩展场景
1. 处理多位数元素
如果数组元素是多位数(例如 [12, 34, 5] → 组合为 12345),上述代码仍然有效。
2. 安全转换(TryParse)
- if (int.TryParse(combined, out int safeResult))
- {
- Console.WriteLine(safeResult);
- }
- else
- {
- Console.WriteLine("无效的整数格式");
- }
复制代码
3. 数学方法(仅限元素为 0-9)
若数组元素均为 0-9 的数字,可用逐位计算:
- int result = 0;
- foreach (int digit in shuffledArray)
- {
- result = result * 10 + digit;
- }
- Console.WriteLine(result); // 输出:312
复制代码
总结
字符串拼接法:通用性强,支持任意整数元素。
数学逐位法:仅适用于元素为 0-9 的情况,性能略高。
根据实际需求选择合适的方法即可。 |
|