[Homework] Advanced C# - Arrays, Lists, Stacks, Queues - Решение на задача 4
Здравейте колеги,
Искам да Ви предложа едно решение на задача 4 от домашното. Според мен е някакво такова сглобено, но с учудване установих, че работи. Ще е добре да разгледам и други решения, защото не мисля че това е най-доброто!
int i;
string[] inputString = Console.ReadLine().Split(' ');
for (i = 0; i < inputString.Length-1; i++)
{
if (inputString[i] == inputString[i + 1])
{
Console.Write("{0} ", inputString[i]);
}
else
{
Console.WriteLine("{0}", inputString[i]);
}
}
Console.WriteLine("{0}", inputString[i]);
Поздрави!!!
Здрасти, решението ти работи с примерите от условието, но ако му подадеш "hi yes yes hi", ще имаш резултат:
hi hi
yes yes
a hi hi не е поредица. Същото е като да я решиш с dictionary.
Аз я реших със string, но ми се ще да я преработя с List<List<string>>, където после ще мога да извадя и най-дългата поредица.
Решение със string
Edit: Решение с List<List<string>>
Здравей,
Не бях изчел цялото условие. Но вече съм си я поправил.
Благодаря!
Ето решението: http://pastebin.com/GysNtrQk
Здрасти!
Какво мислиш за това решение отностно намирането на най-дългата поредица ?
Има дефект, но идеята се разбита (При input "8 9 9 9 10" - показва че най-дългата поредица е 9 9 9, но ако добавя още числа ги показва и тях), не съм го хванал още
using System;
using System.Collections.Generic;
string[] input = Console.ReadLine().Split(' ');
int temp = 0;
int longest=0;
List<string> list = new List<string>();
int counter = 0;
int count = 0;
for (int i = 0; i < input.Length - 1; i++)
{
if (input[i] == input[i + 1])
{
Console.Write(input[i] + " ");
temp++;
}
else
{
Console.WriteLine(input[i] + " ");
}
count = i;
if (temp > longest)
{
longest = temp;
list.Clear();
temp = 0;
counter = i;
}
for (int j=0; j<longest; j++)
{
list.Add(input[counter]);
counter++;
}
}
Console.WriteLine(input[count +1]);
Console.WriteLine("Longest: ");
foreach (string cat in list)
{
Console.Write(cat + " ");
}