Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

rado8506 avatar rado8506 7 Точки

01Censorship Strings and Regular Expressions - More Exercises

Здравейте, имам проблем със задача 01 Censorship. Гърмят ми последните тестове. Вероятно са гранични, при които цензорираната дума се подава между други символи, които присъстват в думата. Пробвах при всякакви шантави варинти и кодът работи, но явно има някакви тестове, за които не мога да се сетя.

Пращам условието: https://softuni.bg/trainings/resources/officedocument/29443/additional-exercise-problem-descriptions-programming-fundamentals-january-2018

Ето и кодът ми: https://pastebin.com/71hZpnhi

Ще съм благодарен ако някой има някакви предложения.

Тагове:
0
Module: C# Advanced
Vesso1980 avatar Vesso1980 486 Точки
Best Answer

Тоа е доста сложничък алгоритъм за тази задача. 3 вложени for цикъла , сплитваш и сравняваш символ по символ. По- принцип колкото по-сложен е алгоритъма, толкова по голям шанс да сбъркаш някъде и по-малък шанс лесно да си откриеш грешката. Ето едно простичко решение:

string word = Console.ReadLine();
string input = Console.ReadLine();
Console.WriteLine(input.Replace(word, new string('*', word.Length)));

А, иначе отностно твоят код - този тест примерно не минава:

mm
memmemm

Цензорира и първата буква m. 

Някъде тук става проблема.

if (inputText[i].Contains(censoredWord))
                {
                    string currentW = inputText[i];
                    for (int j = 0; j < censoredWord.Length; j++)
                    {
                        for (int k = 0; k < currentW.Length; k++)
                        {
                            if (censoredWord[j] == currentW[k])
                            {
                                currentW = currentW.Replace(currentW[k], '*');
                            }
                        }
                    }
                    inputText[i] = currentW;
                }

Защото ти предварително проверяваш, дали думата за цензориране се съдържа в текущата дума и после ако видиш съвпадение на букви направо сменяш на *. А съвпадението може да е просто случайност, както е в случая на теста по-горе.

0
06/06/2018 23:41:30
rado8506 avatar rado8506 7 Точки

Благодаря ти. Понякога направо си се чудя как ги въртя толкова сложни решения, като може да е доста по-просто :) 

0
NikolayNeykov92 avatar NikolayNeykov92 617 Точки

Ето едно още по-кратко решение: https://pastebin.com/w2YfWWSp

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.