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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 16:35   #1
hamsidJ
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 20
По умолчанию Количество идущих подряд символов

Здравствуйте, есть строка, которая состоит из символов R, B и W. Нужно найти какая буква в тексте встречается больше раз подряд. Допустим в строке "RWWBRBWR" больше всего раз подряд идёт W. Если некоторые буквы одинаковое количество раз подряд встречаются, то вывести из все. У меня есть вариант
Код:
               	public static String theMostOftenSuccessively(String s)
	{
		int Rcount = 0;
		int Bcount = 0;
		int Wcount = 0;
		
		for(int i = 0;i<s.length();i++)
		{
			//здесь подсчёт символов подряд
		}
		//это определение результата по данным подсчёта
		if((Rcount==Bcount)&&(Rcount==Wcount))
		{
			return "RBW";
		}
		else if(Rcount==Bcount)
		{
			if(Rcount<Wcount)
			{
				return "W";
			}
			else
			{
				return "RB";
			}
		}
		else if(Rcount==Wcount)
		{
			if(Rcount<Bcount)
			{
				return "B";
			}
			else
			{
				return "RW";
			}
		}
		else if((Rcount>Bcount)&&(Rcount>Wcount))
		{
			return "R";
		}
		else if((Bcount>Rcount)&&(Bcount>Wcount))
		{
			return "B";
		}
		else return "W";
	}
hamsidJ вне форума Ответить с цитированием
Старый 22.01.2012, 14:20   #2
hamsidJ
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 20
По умолчанию

НУ, ПОМОГИТЕ!!!!!!!!!!!!
hamsidJ вне форума Ответить с цитированием
Старый 23.01.2013, 21:03   #3
Shepico
 
Регистрация: 23.01.2013
Сообщений: 3
По умолчанию

Если только 3 символа в строке может быть, то сделал бы так. Но я сам язык только учу. Сравнивать, что больше не стал, думаю сами сможете
Код:
class Laba {
	public static void main (String args[]){
		String s="RWWBRBWR";
		char ch;
		int r=0,w=0,b=0;
		for (int i =0; i<s.length();i++){
			ch=s.charAt(i);
			switch (ch){
				case 'R':
					r++;
					break;
				case 'W':
					w++;
					break;
				case 'B':
					b++;
			}
		}
		System.out.println("R-"+r);	
		System.out.println("W-"+w);	
		System.out.println("B-"+b);					
	}
}
Shepico вне форума Ответить с цитированием
Старый 23.01.2013, 21:59   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Что будет если:
1. RRWWW
2. RRWWWRR
3. RRWWWRRW
4. RRWWWRRWW
Carbon вне форума Ответить с цитированием
Старый 27.01.2013, 04:55   #5
zwyagel
 
Регистрация: 27.01.2013
Сообщений: 4
По умолчанию

задание не совсем четкое и в случае как описал Carbon сделал что последовательность пар WWW равна двум, т.к. посчитал что одинаковые пары букв имеются у индексов 1-2 и 2-3, если надо будет по другому сделать, пиши
p.s. тоже только учу язык

Код:
import java.util.ArrayList;
import java.util.Iterator;

public class Proga {
	
	static String str = "RBWWBBBRW";

	static char [] chars = str.toCharArray();
	static ArrayList listOfChars = new ArrayList();
	
	static int countSameLetter (char ch){ //метод подсчитывает кол-во пар одинаковых букв
		int count = 0;
		for (int i = 0; i < str.length()-1; i++) {
			if ((chars[i] == ch) && (ch == chars[i+1])) count++; 
		}//for
		return count;
	}//countSameLetter

	public static void main(String[] args) {
		// определяем повторяющиеся буквы в строке
		listOfChars.add(chars[0]);
		for (int i = 1; i < str.length(); i++) {
			if (!listOfChars.contains(chars[i]))  listOfChars.add(chars[i]);
		}//for

		System.out.println("строка '"+str +"' состоит из букв: " +listOfChars);
		
		Iterator it = listOfChars.iterator();
		while(it.hasNext()) //в цикле подсчитываем пары для каждой буквы
		{
			char c = (char) it.next();
			System.out.println("одинаковых пар из буквы '" +c +"' встречается "+ countSameLetter(c));
		}//while
		
	}//main
}//class
Результат:
строка 'RBWWBBBRW' состоит из букв: [R, B, W]
одинаковых пар из буквы 'R' встречается 0
одинаковых пар из буквы 'B' встречается 2
одинаковых пар из буквы 'W' встречается 1

Последний раз редактировалось zwyagel; 27.01.2013 в 05:01.
zwyagel вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пусть дан текст. Найдите наибольшее количество цифр, идущих подряд. abakuz Помощь студентам 5 28.05.2011 17:08
Упорядочить строки в StringGrid по характеристике: наибольшее количество идущих подряд нулей (Delphi) Bizikov Помощь студентам 0 26.05.2011 18:54
В массиве из n элементов подсчитать количество четырёд идущих подряд одинаковых элементов ( Delphi7 ) Анастасья Помощь студентам 1 31.03.2011 19:23
верно ли, что среди символов данного текста есть n подряд идущих символов, Yuliya-Nik Помощь студентам 0 06.10.2010 23:44
Задача о шести подряд идущих единицах. llTibegll Помощь студентам 11 06.11.2009 10:04