[C#] Домашно Strings and Text Processing - 23 задача


4

Условие: Write a program that reads a string from the console and replaces all series of consecutive identical letters with a single one. Example: "aaaaabbbbbcdddeeeedssaa" -> "abcdedsa".

Решениеsource.

Обяснение: Отново с регулярен израз става по-лесно, като тук взимаме последния проверен символ.




Отговори



1

Решение: source

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


от stanchev (197 точки)


6

Решение

Правя един цикъл и проверявам дали всяка следваща буква е различна от предишната. Ако е така я добавям в wordWithoutRepeatingLetters. Принтирам думата.


от teleriknetwork (2734 точки)


0

Решение

Обяснение: Използвам класа StringBuilder. Ако текущата буква е различна от следващата, добавям текущата буква чрез метода Append() и й присвоявам стойността на следващата буква.


от cchapo (583 точки)


1

GitHub

Моето решение е без регулярен израз - просто обхождам целия стринг от 2рия символ и ако е различен от предния го добавям в StringBuilder който ми държи отговора.


от dzhenko (3893 точки)


0

Решението http://pastebin.com/4TGHimKr е без регулярни изрази, отчита само букви и не взима предвид значи различни от букви и числа. Тъй като не е споменато дали трябва да различаваме големи от малки букви , решението приема , че са различни , ако  обратното е нужно на входа да се добави .ТоLower() или ToUpper в зависимост от предпочитанията. 

Входния стринг четем чар по чар посредством два for цикъла .Дтория цикъл брой съвпаденията.


от geniusvil (192 точки)


0
Моето решение без регулярен израз.
http://pastebin.com/2Z7ACfpf

от hudsonvsm (25 точки)