Loading...
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Един от проблемите е, че " wordToCheck.Length - 1" трябва да е "wordToCheck.Length - pal - 1", но след отстраняването му гърми още един тест.

1
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Открих и другия проблем - добавял съм думата към палиндромите преди да проверя всички букви. Това е коригираното решение на 100%:
http://pastebin.com/iTjc1Q06

Беше интересно как с отстраняването на проблем, броят на грешните отговори се увеличава. :)

Сега остава само някой да отговори на въпроса защо "a" (a single character) е палиндром?

0
09/08/2016 05:42:35
AntyfrizZz avatar AntyfrizZz 238 Точки

Здравей,

 

Може да сложиш един break; в if-a, който сетва palindrome променливата на false. Ако един път е сетната false, няма смисъл да продължава да цикли.

Относно защо "a" е палиндром. Обяснението в уикипедия "Палиндромът е една или няколко думи или числа, които се четат по един и същ начин от ляво надясно и от дясно наляво". "а" реално си е дума и се чете по един и същ начин от ляво и от дясно.

 

Поздрави!

1
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

За brake-а съм съгласен, макар това да не се отразява на крайния резултат и на тестовете в Judge.

Не ми беше хрумнало да разглеждам буквите, като думи, тъй като в програмирането разграничаваме между character и string, но явно се приема, че всеки стринг от 1 буква е палиндром.

0
AntyfrizZz avatar AntyfrizZz 238 Точки

здравей

 

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

 

поздрави

0
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

То е малко спорно, дали е оптимизация, тъй като използваното времето и в двата случая е 0.015 s. Може би в програма с повече проверки или по-обемен текст би се усетила разликата.

-1
msmilkoff avatar msmilkoff 338 Точки

"a" е палиндром, защото (колкото и странно да изглежда) се пише по един и същи начин отляво-надясно и обратно.

Няма нужда от .DIstinct() и от Array.Sort(). 
Може вместо List да ползваш SortedSet, (който ти пази само уникални, сортирани елементи) и този прост O(n) алгоритъм за намирането на палиндроми: 
 

private static bool IsPalindrome(string word)
{
    int rightIndex = word.Length - 1;
    int leftIndex = 0;
    while (rightIndex >= leftIndex)
    {
        if (word[rightIndex] != word[leftIndex])
        {
            return false;

        }

        rightIndex--;
        leftIndex++;
    }

    return true;
}

 

1
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Още съм в Programming Basics и не съм чувал за SortedSet. :)

0
msmilkoff avatar msmilkoff 338 Точки

Щом чаткаш List, значи чаткаш и SortedSet - представи си го като List, в който не можеш да вкараш два едни и същи елемента и освен това ти ги пази в нарастващ ред, т.е., ако се опиташ да му вкараш поредицата 5,3,5,6,7,7,9,1, в SortedSet-а ще получиш:
1, 3, 5, 6, 7, 9

0
09/08/2016 23:59:45
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Ясно. По-трудно е да се сетиш за него, когато ти потрябва, отколкото да го разбереш.

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