想法来源:
拜读黑暗执行绪使用yield return方式后,想说自己可以练习不用yield return的方式暴力破解看看,并记录自己解题过程。
题目:
从阵列 [A, B, B, C, X, C, C, B, B, D, D, D] 挑出 [B, B]
、[C, C]
、[B, B]
、[D, D, D]
四个群组。
程式码(使用LINQPad):
var raw = "A,B,B,C,X,C,C,B,B,D,D,D".Split(','); //测试资料var tempList = new List<string>() { raw.First() }; //把第一个字元塞进tempList,当作下一个比较基準var outputList = new List<string>(); //最后显示的listforeach(var item in raw.Skip(1)) //从第二个字元开始(因为第一个字元已经塞进tempList){if (tempList.Last() == item) { tempList.Add(item); }else{ if (tempList.Count() > 1) //有两个以上相同的字元就存进outputList outputList.AddRange(tempList); tempList.Clear(); //清空tempList tempList.Add(item); //再把目前字元存在tempList,当作下一个比较基準}} if (tempList.Count() > 1) //有两个以上相同的字元就存进outputList outputList.AddRange(tempList);outputList.Dump("outputList");
结果:
参考资料来源:
黑暗执行绪 C# 练习 - 在阵列中找出连续重複出现项目