Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 31

Строки

25.12.2012, 22:00. Показов 1351. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создается строка из n слов. Посчитать в ней количество слов, которые содержат одинаковые наборы символов(в независимости от положения и регистра). Использовать String и StringBuffer, StringTokenizer, сравнить производительность.

Вопрос: как посчитать количество слов, которые содержат одинаковые наборы символов?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2012, 22:00
Ответы с готовыми решениями:

Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки
Помогите пожалуйста! 1)Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки. 2)Дана...

Ввести строки и через n символов первой строки вставить вторую строку, и так до конца строки
Помогите исправить баг задача состоит в следующем :ввести строку и простроку тоесть две строки и надо через (n) символов первой строки...

Слить две строки, вставив символы одной строки между символами другой строки
Строка a из n символов лексикографически меньше строки b из n символов, если существует такой индекс j, что aj < bj, а для всех i < j...

1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
26.12.2012, 09:54
Лучший ответ Сообщение было отмечено Татьян как решение

Решение

Я хз, как со StringBuffer'ом парсить строку. Вариант с ручным нахождением ближайшего сепаратора слишком лень делать.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import java.util.*;
 
interface WordsMapper {
    String DEFAULT_WORD_SEPARATORS = " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
    Map<String, Integer> mapWords(String source);
}
 
class SplitWordsMapper implements WordsMapper {
    @Override
    public Map<String, Integer> mapWords(String source) {
        Map<String, Integer> wordsCounterMap = new TreeMap<String, java.lang.Integer>(String.CASE_INSENSITIVE_ORDER);
 
        String [] words = source.split("[ \\p{Punct}]+");
        for (String word : words) {
            if (!wordsCounterMap.containsKey(word)) {
                wordsCounterMap.put(word.toLowerCase(), 1);
            } else {
                wordsCounterMap.put(word, wordsCounterMap.get(word) + 1);
            }
        }
 
        return wordsCounterMap;
    }
}
 
/**
 * StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged
 * in new code. It is recommended that anyone seeking this functionality use the split method of String or the
 * java.util.regex package instead.
 * {@see <a href="http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html">Java Documentation</a>}
 */
@Deprecated
class TokenizerWordsMapper implements WordsMapper {
    @Override
    public Map<String, Integer> mapWords(String source) {
        Map<String, Integer> wordsCounterMap = new TreeMap<String, java.lang.Integer>(String.CASE_INSENSITIVE_ORDER);
 
        StringTokenizer tokenizer = new StringTokenizer(source, DEFAULT_WORD_SEPARATORS);
        while (tokenizer.hasMoreTokens()) {
            String word = tokenizer.nextToken();
            if (!wordsCounterMap.containsKey(word)) {
                wordsCounterMap.put(word.toLowerCase(), 1);
            } else {
                wordsCounterMap.put(word, wordsCounterMap.get(word) + 1);
            }
        }
        return wordsCounterMap;
    }
}
 
enum WordsMappers {
    SPLIT("Split words mapper", new SplitWordsMapper()),
    TOKENIZER("Tokenizer words mapper", new TokenizerWordsMapper());
    private WordsMapper wordsMapper;
    private String name;
    WordsMappers(String name, WordsMapper wordsMapper) {
        this.name = name;
        this.wordsMapper = wordsMapper;
    }
 
    public WordsMapper getWordsMapper() {
        return wordsMapper;
    }
 
    public String getName() {
        return name;
    }
}
 
public class Tutorial0009 {
    private final static Random random = new Random();
 
    private static String getRandomString(int length) {
        String letters = "abcdefghijklmnopqrstuvwxyz";
        StringBuilder result = new StringBuilder(length);
        while (length-- > 0) {
            if (random.nextInt(10) == 0) {
                result.append(WordsMapper.DEFAULT_WORD_SEPARATORS.charAt(random.nextInt(WordsMapper.DEFAULT_WORD_SEPARATORS.length())));
            } else {
                result.append(letters.charAt(random.nextInt(letters.length())));
            }
        }
        return result.toString();
    }
 
    private static volatile Map<String, Integer> result = null;
    private static double checkPerformance(WordsMapper wordsMapper, long numberOfTries, int randomStringSize) {
        long sideLoss = 0;
        long begin = System.nanoTime();
 
        for (int i = 0; i < numberOfTries; ++i) {
            long beginSideLoss = System.nanoTime();
            String randomString = getRandomString(randomStringSize);
            sideLoss += System.nanoTime() - beginSideLoss;
 
            result = wordsMapper.mapWords(randomString);
        }
        long end = System.nanoTime();
 
        return (double)(numberOfTries * 1000000000) / (end - begin - sideLoss) ;
    }
 
    public static void main(String[] args) {
        String source = "Создается строка из n слов. Посчитать в ней количество слов, которые содержат одинаковые наборы символов(в независимости от положения и регистра). Использовать String и StringBuffer, StringTokenizer, сравнить производительность. Вопрос: как посчитать количество слов, которые содержат одинаковые наборы символов?";
 
        for (WordsMappers wordsMapper : WordsMappers.values()) {
            for (int numberOfTries = 10; numberOfTries < 100000; numberOfTries *= 10)
                for (int randomStringLength = 10; randomStringLength < 100000; randomStringLength *= 10) {
                    double performance = checkPerformance(wordsMapper.getWordsMapper(), numberOfTries, randomStringLength);
                    System.out.println("Number of tries = " + numberOfTries +
                        ", random string length = " + randomStringLength +
                        ", " + wordsMapper.getName() + ": " +
                         + performance +
                        " parses per second.");
                }
        }
    }
}
Суть в том, что при малом количестве данных и небольшом количестве попыток String.split менее эффективен, чем Tokenizer, а при большом количестве попыток и увеличении количества обрабатываемых данных String.split "обгоняет" Tokenizer.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2012, 09:54
Помогаю со студенческими работами здесь

Сравнить строки, первый несовпадающий элемент строки-приемника записать в регистр AL, строки-источника - в DL
Помогите написать программу на ассемблерене совсем еще разобрался с этим задание: Ввести с клавиатуры две строки одноразрядных...

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках.
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши &quot;Ввод&quot;. Программа должна определить длину...

Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки
Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки. 1. Я дуб дубом,даже...

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие клавиши ввод.Программа должна определить длину введенной строки...

Строки. Если в конце строки точка отсутствует, то найти слово, заканчивающееся точкой и перенести его в конец строки.
Дана строка, состоящая из слов и содержащая одну точку в конце одного из слов. Если в конце строки точка отсутствует, то найти слово,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru