Я хочу метод, который получает как вход two char arrays
, и целое число d
, которое представляет собой максимум различий между символами в обоих массивах и возвращает true или false в зависимости от if массивы похожи отличающиеся не более чем с д символовПолучите количество разных символов между двумя строками, допускающее определенное количество разностей
так, например
Имея
char[] a1 = { 's', 't', 'a', 'f', 'f' };
char[] a2 = { 's', 't', 'a', 'c', 'k' };
и имеющей D = 2 будет возвращать верно, потому что эти массивы почти аналогичный
Я думал о делает цикл и сравнивая каждый символ и имеющий счетчик maxDiference и если счетчик превышает возвращать ложь, как:
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace auxros
{
class Program
{
static void Main(string[] args)
{
char[] a1 = { 's', 't', 'a', 'f', 'f' };
char[] a2 = { 's', 't', 'a', 'c', 'k' };
bool areDifferent = CharMismatches(a1, a2, 1);
System.Console.WriteLine("The arrays are diferent at most by one char? " + areDifferent);
areDifferent = CharMismatches(a1, a2, 2);
System.Console.WriteLine("The arrays are diferent at most by two chars? " + areDifferent);
areDifferent = CharMismatches(a1, a2, 3);
System.Console.WriteLine("The arrays are diferent at most by three chars? " + areDifferent);
}
static bool CharMismatches(char[] a1, char[] a2, int d) {
int mismatches = 0;
for (int i = 0; i < a1.Length; i++)
{
if (!a1[i].Equals(a2[i]))
{
mismatches++;
}
if (mismatches == d)
{
return true;
}
}
if (mismatches <= d)
{
return false;
}
return true;
}
}
}
Есть ли более эффективный способ сделать это?
Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –
'if (mismatches <= d) {return false;} return true;' Эта часть избыточна, просто нужно 'return false''. –
@cMinor, каким должно быть поведение, когда char [] a1 = {'k', 'c', 'a', 't', 's',}; char [] a2 = {'s', 't ',' a ',' c ',' k '} ;, Вы пытаетесь сравнить char только с одним индексом? – Sameer