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

Означава да сплитнеш инпута ти със всичко което не е буква, без регекс не знам как ще го направиш :D

1
kaloyannikov avatar kaloyannikov 531 Точки

Без regex ще е доста писане ,но се сещам може да се проверява char по char , ако char-a е буква да се влезне в цикъл до момент в който char-a не е буква и увеличава wordCount с 1.

Не съм много сигурен дали ще работи.

0
slavpetroff avatar slavpetroff Trainer 155 Точки

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

0
alex1966 avatar alex1966 255 Точки

Стига бе хора много сложна я правите тая задача, 10 000 пъти е по лесно да напишеш 1 регекс или да видиш от Google
 .split("\\P{Alpha}+");

което не работи в regex101, защото си е мисля че само за на Java компилатора, но върши перфектна работа за non-letter separator

0
kaloyannikov avatar kaloyannikov 531 Точки

с регекс съм я решил и аз макар и не точно тоя , но той пита за решение без такъв.

0
slavpetroff avatar slavpetroff Trainer 155 Точки

Аз предложих и с регекс, ако не гоним пърформънс, не виждам проблем в създаването на един масив, набиването на думите в речник и проверка, дали съществува като ключ в речника. Какъв е твоя вариант, без масив и речник ?

П.С

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

 

0
06/04/2016 00:31:52
a.beshovishki avatar a.beshovishki 79 Точки

Какво значи без regex? Сплитваш по \w. Аз така го направих.

0
EyubDjelil avatar EyubDjelil 9 Точки

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

0
kaloyannikov avatar kaloyannikov 531 Точки

\w не е правилен регекс в случая , щото хваща и цифри.

1
alex1966 avatar alex1966 255 Точки

Чесно казано логика си има, винаги домашните са направени, така че първата част е от текущия урок, а втората част са задачи които предстои да ги учим и ги дават за да се подготвим повече за следващия урок, доколкото съм забелязал винаги вървят така.

1
Alex0101 avatar Alex0101 374 Точки

Здравейте колеги, тук според мен проблемът идва в недостатъчното условие. Казват да разделим текста на думи, като за разделител ползваме всичко, което не е буква - non-letter /поне аз така го разбирам/. Няма никъде условие да пребройм уникабните думи, следователно броим всички , както е на примира. 

Достатъчно, според мен, е да се сплитне на \w и да се вземе броя на елементите в масива. Така минават всички тестове по условие.

 

0
Ivanov.Ivan avatar Ivanov.Ivan Trainer 558 Точки

И ако в текста имаш 123 ще мачне и него. Ако искаш да мачваш всички букви трябва да се използва \p{L}+

0
IskrenPenev avatar IskrenPenev 177 Точки

Когато в условието се казва  "Use any non-letter character as word separator", e най-добре да ползваш [^a-zA-z]+ за да разделиш входа  - остават само поредиците от латински букви. 

1