不使用Linq和List实现C#两个数组合并去重的方法
实现方案
核心逻辑
不需要借助Linq或者List类,仅用基础数组操作即可实现,核心分为两步:
- 遍历两个输入数组,统计所有不重复元素的总数,同时暂存这些不重复元素
- 根据统计的不重复元素数量创建结果数组,复制有效元素即可
完整代码实现
using System; class Program { static void Main() { string[] arr1 = new string[2]{"Hello", "Stack"}; string[] arr2 = new string[2]{"Stack", "Overflow"}; int totalPossibleLength = arr1.Length + arr2.Length; string[] tempUniqueItems = new string[totalPossibleLength]; int uniqueCount = 0; // 处理第一个数组的元素 foreach (string item in arr1) { bool isDuplicate = false; for (int i = 0; i < uniqueCount; i++) { if (tempUniqueItems[i] == item) { isDuplicate = true; break; } } if (!isDuplicate) { tempUniqueItems[uniqueCount] = item; uniqueCount++; } } // 处理第二个数组的元素 foreach (string item in arr2) { bool isDuplicate = false; for (int i = 0; i < uniqueCount; i++) { if (tempUniqueItems[i] == item) { isDuplicate = true; break; } } if (!isDuplicate) { tempUniqueItems[uniqueCount] = item; uniqueCount++; } } // 生成最终结果数组 string[] result = new string[uniqueCount]; for (int i = 0; i < uniqueCount; i++) { result[i] = tempUniqueItems[i]; } // 测试输出 Console.WriteLine(string.Join(",", result)); // 输出结果:Hello,Stack,Overflow } }
补充说明
如果需要重复使用该能力,可以把去重合并的逻辑封装成独立的方法,传入两个字符串数组,返回处理后的结果数组即可。
内容的提问来源于stack exchange,提问作者Kristóf Vizkeleti
相关产品推荐
相关产品推荐

