Вывести максимальную длину одинаковых символов в бинарной последовательности
Есть последовательность из 1 и 0.
Если ввести 0000100, то должно вывести 4 потому что 4 нуля это максимум нулей подряд, но выводит 2.
Также и с единицей например, если ввести 1111011, то выведет 2, а не 4.
Где у меня ошибка?
static void Main(string[] args)
{
string subs = Console.ReadLine();
int ammountOfZeros = 0;
int ammountOfUnits = 0;
int LenghtOfSubs = 0;
int temp = 0;
for(int i = 0; i < subs.ToString().Length;i++)
{
for (int j = 1; j < subs.ToString().Length; j++)
{
if (subs[i] == '0' & subs[j] == '0')
{
if (subs[i].Equals('0') & subs[j].Equals('0'))
{
LenghtOfSubs++;
ammountOfZeros = LenghtOfSubs;
}
else
{
LenghtOfSubs = 0;
}
}
}
}
LenghtOfSubs=0;
for (int i = 0; i < subs.ToString().Length; i++)
{
for (int j = 1; j < subs.ToString().Length; j++)
{
if (subs[i].Equals('1') & subs[j].Equals('1'))
{
LenghtOfSubs++;
ammountOfUnits = LenghtOfSubs;
}
else
{
LenghtOfSubs = 0;
}
}
}
Console.WriteLine(($"{ammountOfZeros} {ammountOfUnits}"));
Console.ReadKey();
}
Ответы (1 шт):
Автор решения: DaraHessesh
→ Ссылка
У вас в частях ammountOfZeros = LenghtOfSubs; и ammountOfUnits = LenghtOfSubs; идет присвоение длины последней последовательности из одинаковых символов, а не наибольшей.
Советую их заключить в
if (ammountOfZeros < LenghtOfSubs){
ammountOfZeros = LenghtOfSubs;
}
и
if (ammountOfUnits < LenghtOfSubs){
ammountOfUnits = LenghtOfSubs;
}
Соответственно.