Професионална програма
Loading...
+ Нов въпрос
TonyTroev avatar TonyTroev 26 Точки

RageQuit

Опитах се да реша тази задача от Exam Preparation III, използвайки HashSet<char> за уникалните елементи, но ми излизаха с един повече на 3-ти нулев тест и 1-ви тест. Ако някой ми каже защо, ще му бъда много благодарен!

Judge: https://judge.softuni.bg/Contests/Practice/Index/455#2

0
Programming Basics
AlucardDracula avatar AlucardDracula 416 Точки
string input = Console.ReadLine().ToUpper();
Regex test = new Regex(@"(\D+)(\d+)");
StringBuilder result = new StringBuilder();
foreach (Match a in test.Matches(input))
{
    string txt = a.Groups[1].Value;
    int repeat = int.Parse(a.Groups[2].Value);
    for (int i = 0; i < repeat; i++)
    {
        result.Append(txt);
    }
}
Console.WriteLine("Unique symbols used: {0}", result.ToString().Distinct().Count());
Console.WriteLine(result);

така съм го решил преди време. сигурно има и други начини.

0
TonyTroev avatar TonyTroev 26 Точки

И аз така подходих, след като не ми се получаваше с HashSet. Оказа се, че когато числото след думата е нула, не се добавят символите. Това е била уловката. Благодаря все пак за помощта!

0
28/02/2018 23:59:47
AlucardDracula avatar AlucardDracula 416 Точки

Колега TonyTroev стана ми интересно и отново я реших по-различен начин или просто по трудния начин: https://pastebin.com/wL3Gq0iP

първо ми даваше грешка с времето щото бях сложил StringBuilder-а по този начин, но после го оправих както ще се вижда на линка, което дадох:

for (int i = index; i < user.Length; i++)
            {
                if (Char.IsDigit(user[i]))
                {
                    StringBuilder currentRepeatCount = new StringBuilder();
                    currentRepeatCount.Append(user[i]);
                    int j;
                    for (j = i+1; j < user.Length; j++)
                    {
                        if (Char.IsDigit(user[j]))
                        {
                            currentRepeatCount.Append(user[j]);
                        }
                        else
                            break;
                    }
                    repeatCount = int.Parse(currentRepeatCount.ToString());
                    index = j;
                    break;
                }
                else
                    currentWord.Append(user[i]);
            }

 

0