Вы можете помочь с этим?Сравнить lexicographically 2 char arrays
Мне нужно сравнить лексикографически два массива: если один из них короче другого, он сначала лексикографический. Если их длина одинакова, их нужно сравнивать по элементам. Если элемент находится перед другим в алфавите, этот массив сначала лексикографически.
Вот мой код:
using System;
internal class CompareTwoCharArraysLexicographically
{
private static void Main()
{
char[] firstArray = {'a', 'b', 'c', 'z'};
int firstArrayLength = firstArray.Length;
char[] secondArray = {'a', 'b', 'c', 'd'};
int secondArrayLength = secondArray.Length;
int length = Math.Min(firstArray.Length, secondArray.Length);
if (firstArray.Length > secondArray.Length)
{
Console.WriteLine("Second array is earlier.");
}
else if (firstArray.Length == secondArray.Length)
{
for (int i = 0; i < length; i++)
{
if (firstArray[i] > secondArray[i])
{
Console.WriteLine("2 array is earlier.");
break;
}
else if (secondArray[i] > firstArray[i])
{
Console.WriteLine("1 array is earlier.");
break;
}
else
{
Console.WriteLine("Two arrays are equal.");
}
}
}
else
{
Console.WriteLine("First array is earlier.");
}
}
}
Как я могу избежать три раза повторенное сообщения «Два массива равен.»?
просто добавьте 'break' заявления, как только вы знаете, статус коды сравнения –
, как эта простой/читаемую логика/петли должны быть' debugged' узнать т o использовать отладчик, когда вы тестируете весь код, который вы пишете, независимо от того, насколько логичным и безупречным может казаться код. – MethodMan
Сравнение длины сначала _not_ lexicographic. –