Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2014, 02:26   #1
avoro
 
Регистрация: 07.06.2014
Сообщений: 4
Радость Как посчитать как часто повторяются буквы в String

Ребята подскажите как посчитать сколько каждая буква повторяется в string которая написана юзером. Т.е если юзер пишет "abcddd" то программа отвечает a = 1 , b=1, c=1, d=3 и т.д
Спасибо
Вот моя часть кода если поможет:
Код:
public static void main(String[] args)
    {
    
     Scanner input = new Scanner (System.in);
     String text = input.nextLine();      
     
     char[] letters = text.toCharArray();  
     char[] small = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k', 'l', 'm', 'n','o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x','y', 'z' };
     
     int count = 0;
     for (int i = 0; i < text.length(); i++)
     {
      count++;
     } 
     System.out.println( text +  count);
     System.out.print( letters);
     }
avoro вне форума Ответить с цитированием
Старый 07.06.2014, 18:39   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

А какие буквы считать надо?
Carbon вне форума Ответить с цитированием
Старый 08.06.2014, 21:31   #3
avoro
 
Регистрация: 07.06.2014
Сообщений: 4
По умолчанию

буквы английского алфавита. те String text = input.nextLine() дает любое сообщение, а программа расписывает алфавит и показывает как часто повторяются буквы
avoro вне форума Ответить с цитированием
Старый 08.06.2014, 23:44   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Те которые a-z или заглавные тоже?
Carbon вне форума Ответить с цитированием
Старый 09.06.2014, 11:14   #5
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Код:
     public static void main(String []args){
        String string = "mystringg";
        char charArray[] = string.toCharArray();
        HashMap<Character, Integer> count = new HashMap<Character, Integer>();
        for (int i = 0; i < charArray.length; i++) {
            Character character = new Character(charArray[i]);
            if (count.containsKey(character)) {
                count.put(character, count.get(character) + 1);
            } else {
                count.put(character, 1);
            }
        }
        System.out.println(count);
     }
buriat вне форума Ответить с цитированием
Старый 09.06.2014, 12:14   #6
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от buriat Посмотреть сообщение
Код:
     public static void main(String []args){
        String string = "mystringg";
        char charArray[] = string.toCharArray();
        HashMap<Character, Integer> count = new HashMap<Character, Integer>();
        for (int i = 0; i < charArray.length; i++) {
            Character character = new Character(charArray[i]);
            if (count.containsKey(character)) {
                count.put(character, count.get(character) + 1);
            } else {
                count.put(character, 1);
            }
        }
        System.out.println(count);
     }
Многовато выделений памяти, боксингов и анбоксингов и к тому же в хэш пишутся так же и левые символы (если строка состоит не только из букв, что условие задачи вполне допускает).
Carbon вне форума Ответить с цитированием
Старый 09.06.2014, 14:52   #7
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Ну это по моему более универсальный вариант т.к. с хэшем потом можно делать что хочешь. А если надо просто вывести, то да - хеш не нужен
buriat вне форума Ответить с цитированием
Старый 09.06.2014, 15:40   #8
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Мой вариант для конкретной задачи:

Код:
int[] counts = new int[(int)'z' - (int)'a'];
		
String word = "...something...";
for (int i = 0; i < word.length(); ++i) {
	char symbol = word.charAt(i);
	int indexOfSymbol = (int)symbol - (int)'a';
	
	if (indexOfSymbol >= 0 && indexOfSymbol < counts.length) {
		++counts[indexOfSymbol];
	}
}

for (int i = 0; i < counts.length; ++i) {
	if (counts[i] > 0) {
		System.out.println((char)(i + (int)'a') + " - " + counts[i]);
	}
}
Carbon вне форума Ответить с цитированием
Старый 09.06.2014, 20:13   #9
avoro
 
Регистрация: 07.06.2014
Сообщений: 4
По умолчанию

Спасибо огромное всем что помогли!
avoro вне форума Ответить с цитированием
Старый 14.06.2014, 07:53   #10
avoro
 
Регистрация: 07.06.2014
Сообщений: 4
По умолчанию

Если кому-то понадобится вот решение задачи которое мне показал учитель
Код:

    
    public static void main(String[] args)
    {
    
     Scanner input   = new Scanner (System.in);
     String text     = input.nextLine();     
     char[] letters  = text.toCharArray(); 
     char[] alphabet = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k', 'l', 'm', 'n','o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x','y', 'z' };
     int [] counts   = new int[26];
     
     
     for ( int i=0; i<letters.length; i++ ){
           
            for( int j=0; j<alphabet.length; j++ ){
     
                   if( letters[i] == alphabet[j] ){
                              counts[j]++;
                         }
     
                      }
                     
  
             }
     
     
     for ( int j=0; j<alphabet.length; j++){
     System.out.println( alphabet[j] + " " + counts[j]);
     }
            
             
     int index = 0;
     for ( int i=1; i<26; i++){
         if (counts [index]< counts[i]){
         index = i;
         }
     }
     System.out.println("The letter with the greatest frequency is: "   + alphabet[index]); 
     
     
     
     
     
     
     
     
       
      }                        
             
}
avoro вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан текст на русском языке. Напечатать в алфавитном порядке все согласные буквы, которые не повторяются в данном предложении. Olzhakesh C# (си шарп) 5 12.05.2014 00:28
Как часто вы извиняетесь? Linel Свободное общение 13 08.06.2012 19:06
Удалить слова, в которых буквы повторяются Artoo Помощь студентам 0 16.12.2011 22:09
Как улучшить ВПР! Данные повторяются! ДЕНИС123 Microsoft Office Excel 2 28.11.2011 22:59
Посчитать буквы olimpus Microsoft Office Excel 3 06.02.2011 12:44