Как через метод Count подсчитать идущее подряд количество символов
Надо подсчитать количество символов идущих подряд. Если 2 подряд идущих символов находятся вначале строки то выводить 1 Если 2 подряд идущих символов находятся в конце строки, то выводить 1
Примеры вывода и ввода
+-+-+-
0
++-+--+-+-+
1
-+-++--
1
+-++-+-+-+
2
+++
3
---
3
Я попытался разбить строку на массив символов и через них как-то искать эти условия, но получается какая-то длинная пелена. Можно ли как-то решить эту задачу с помощью метода Count Linq?
public class MainClass
{
public static void Main()
{
var d = Console.ReadLine().ToArray();
int count = 0;
for(int i = 0; i < d.Length; i++)
{
if (d[0] == '+' && d[1] == '+')
{
Console.WriteLine(1);
break;
}
else if (d[i] == '+')
{
count++;
}
}
}
}
Ответы (1 шт):
Автор решения: User
→ Ссылка
while (true)
{
String str = Console.ReadLine();
Int32 indexSymbol = 0, indexFirstSymbol = 0, indexLastSymbol = str.Length - 1;
Int32 limitCounterSymbols = 2; // Количество контроля 1-ый или полсдений символов
Int32 count = 1 // Количество символов в средине строки
, maxCount = 0;
Boolean checkFirstSymbol = true, checkLastSymbol = true;
for (Int32 i = 0; i < str.Length; i++)
{
if (checkFirstSymbol && indexFirstSymbol != i && str[indexFirstSymbol] != str[i])
{
Int32 tmpCount = i - 1 == limitCounterSymbols ? i - 2 : i - 1;
maxCount = tmpCount > maxCount ? tmpCount : maxCount;
checkFirstSymbol = false;
if (i == limitCounterSymbols)
{
break;
}
}
if (checkLastSymbol && indexLastSymbol != i && str[indexLastSymbol] != str[str.Length - 1 - i])
{
Int32 tmpCount = str.Length - (str.Length - i + 1);
tmpCount = tmpCount == limitCounterSymbols ? tmpCount - 1 : tmpCount;
maxCount = tmpCount > maxCount ? tmpCount : maxCount;
checkLastSymbol = false;
if (str.Length - (str.Length - i) == limitCounterSymbols)
{
break;
}
}
if (i != indexSymbol && str[i] == str[indexSymbol])
{
count++;
}
if (str[i] != str[indexSymbol] || i + 1 == str.Length)
{
maxCount = count > 1 && count > maxCount ? count : maxCount;
count = 1;
indexSymbol = i;
}
}
Console.WriteLine(maxCount);
Console.ReadKey();
Console.Clear();
}