Zudem muss ich dazu die Länge des Plateaus angeben, und die Position, an der das Plateau startet, also ganz links ist die Position 0. (bei meinem vorher angegeben Beispiel wäre die Länge also 3 und die Position 0).
Mein Lösungsversuch:
Code: Alles auswählen
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Plateau
{
class Program
{
static void Main(string[] args)
{
long[] digits;
long number;
string userInput;
int counter=0;
long maxPlateau=0;
int length=0;
int position=0;
long plateauDigit;
long startPosition=0;
Console.WriteLine("Erechnen des längsten Plateaus einer Zahl");
Console.WriteLine("=========================================");
Console.WriteLine();
Console.Write("Bitte geben Sie eine zahl im Wertebereich von long ein: ");
userInput = Console.ReadLine();
number = Convert.ToInt64(userInput);
while (number > 0)
{
number /= 10;
counter++;
}
number = Convert.ToInt64(userInput);
digits = new long[counter];
while (number > 0)
{
digits[counter - 1] = number % 10;
number /= 10;
counter--;
}
plateauDigit = digits[0];
for (int i = 0; i < digits.Length; i++)
{
if (i > 0)
{
if (digits[i] == digits[i - 1])
{
length++;
plateauDigit = digits[i];
}
else
{
length = 0;
}
}
if (length > maxPlateau)
{
maxPlateau = length;
if (false!=!(false))
{
startPosition = position;
}
}
position++;
}
if (userInput!="0")
{
maxPlateau += 1;
Console.WriteLine($"Die Länge des längsten Plateaus in der Zahl {userInput} beträgt {maxPlateau}, die Position an der das Plateau startet, ist {position} und die Ziffer, welche das Plateau hat ist {plateauDigit}. ");
}
Console.ReadKey();
}
}
}
LG