2014-10-25 2 views
-5

Мне нужно напечатать все слова, которые появляются более одного раза в строке.Проблема с поиском подстроки в строке

пример

input:s = "Java Ruby PHP. Java is good. PHP please looks at Java" 

выход:

Java 
PHP 
+1

Начните с разбивки строки на токены. Затем примените алгоритм, который обнаруживает все токены, появляющиеся более одного раза (это можно сделать в O (n)). Затем распечатайте свой результат. – hexafraction

+0

Вот учебник по Java: http://docs.oracle.com/javase/tutorial/. И вот javadoc: http://docs.oracle.com/javase/7/docs/api/. –

+2

Добро пожаловать в SO! К сожалению, ваш ответ может быстро сделать поиск Google с правильными ключевыми словами, попробуйте googling «Строка повторяющихся слов Java String» – KodyVanRy

ответ

0
Set<String> words = new HashSet<>(); 
    String str = "Java Ruby PHP. Java is good. PHP please looks at Java"; 
    Matcher mat = Pattern.compile("\\b(\\w+)(?=\\b.*\\1)").matcher(str); 
    while(mat.find()){ 
     words.add(mat.group(1)); 
    } 
    System.out.println(words); 

Также вы можете просто разделить строку на слова и вычислить количество, используя карту. И затем фильтруйте слова со счетом> 1.

+0

большое спасибо. это сработало –

Смежные вопросы