如何查找镜像副本的所有实例
本文关键字:副本 实例 镜像 何查找 查找 | 更新日期: 2023-09-27 18:16:17
我一直在寻找关于如何做到这一点的任何答案。
我想做的是,取一个数字数组,例如{1, 3, 5, 6, 8, 7, 6 ,5, 3, 1}
(但它将使用用户输入),并找到这些数字的重复镜像,并返回所述数组的一个实例中涉及的索引数。
我知道c#的基础知识,但无法掌握这项任务。不,这不是作业。这是我自己的项目,以扩大我的知识。
我不是目前周围的代码,我有这部分,但会非常感谢任何帮助/建议任何人可以给我。
int[] array = {1, 3, 5, 6, 8, 7, 6 ,5, 3, 1};
//holds left index of mirrored pair, you can easily find the right one
var mirroredIndexes = new List<int>();
var length = array.Length;
for (int i = 0; i < length / 2; i++)
{
if(array[i] == array[length - i - 1])
mirroredIndexes.Add(i);
}
mirroredIndexes.ForEach(Console.WriteLine);
Console.WriteLine ("total of {0} mirrored pairs ({1})",
mirroredIndexes.Count,
string.Join(", ", mirroredIndexes.Select(i => array[i])));
打印下一个索引:
0
1
2
3
total of 4 mirrored pairs (1, 3, 5, 6)
我想这就是你想要的。这将返回一个匹配索引的列表。如。第一名==最后一名,第二名==倒数第二,第三名==倒数第三
var matches = new List<Tuple<int, int>>();
var array = new [] { 0, 1, 2, 3, 4, 5, 3, 2, 1, 0 };
if (array.Length % 2 != 0)
throw new Exception("Array must have an even amount of elements");
for (int i = 0; i < array.Length / 2; i++)
{
if (array[i] == array[array.Length - 1 - i])
{
matches.Add(new Tuple<int, int>(i, array.Length - 1 - i));
}
}
var firstMatchingIndex1 = matches[0].Item1;
// This will be 0
var firstMatchingIndex2 = matches[0].Item2;
// This will be 9
您可以更进一步,使用自定义类,并捕获匹配的实际值(例如:Index1为1,index2为8,值为1