сгруппировать символы в строке
От: Аноним  
Дата: 21.02.13 14:30
Оценка:
например есть "vvabbcbcc"
Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"
Есть какой-то быстрый способ? Мне дали 5 минут написать метод
Re: сгруппировать символы в строке
От: Blazkowicz Россия  
Дата: 21.02.13 14:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>например есть "vvabbcbcc"

А>Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"
А>Есть какой-то быстрый способ? Мне дали 5 минут написать метод
отсортировать не вариант?
Re[2]: сгруппировать символы в строке
От: Аноним  
Дата: 21.02.13 15:10
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
отсортировать я знаю ( два цикла , временная переменная для "свапа" — довольно просто)
Вот именно сгруппировать и сохранить последовательность.
Я похоже сделаю(придумаю "алгоритм") — но время 5 мин!!! Может это решенное ?

B>Здравствуйте, Аноним, Вы писали:


А>>например есть "vvabbcbcc"

А>>Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"
А>>Есть какой-то быстрый способ? Мне дали 5 минут написать метод
B>отсортировать не вариант?
Re: сгруппировать символы в строке
От: PZI  
Дата: 21.02.13 15:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>например есть "vvabbcbcc"

А>Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"
А>Есть какой-то быстрый способ? Мне дали 5 минут написать метод

Если плевать на память, и лишь бы работало за 5 мин. — то ЛинкедХешМап поможет
Re[2]: сгруппировать символы в строке
От: Аноним  
Дата: 21.02.13 15:29
Оценка:
Здравствуйте, PZI, Вы писали:

Хоть намекните как?

PZI>Здравствуйте, Аноним, Вы писали:


А>>например есть "vvabbcbcc"

А>>Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"
А>>Есть какой-то быстрый способ? Мне дали 5 минут написать метод

PZI>Если плевать на память, и лишь бы работало за 5 мин. — то ЛинкедХешМап поможет
Re[3]: сгруппировать символы в строке
От: PZI  
Дата: 21.02.13 15:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, PZI, Вы писали:


А>Хоть намекните как?


PZI>>Здравствуйте, Аноним, Вы писали:


А>>>например есть "vvabbcbcc"

А>>>Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"
А>>>Есть какой-то быстрый способ? Мне дали 5 минут написать метод

PZI>>Если плевать на память, и лишь бы работало за 5 мин. — то ЛинкедХешМап поможет


Бежишь по строке и считаешь, что каждый символ это ключ. Вытаскиваешь из мапки по этому ключу значение, которое из себя представляет целочисленное число(количество повторений), если нет такого значения, добавляешь со значением 1, если есть — инкрементишь. Потом проходишь по мапке и собераешь в нужную строку.
Re: сгруппировать символы в строке
От: cvetkov  
Дата: 21.02.13 17:39
Оценка:
LinkedHashMap

в качестве ключа буква, в качестве значения количество вхождений.

бежиш по строке с лева на право.

потом итерируешся по мапу (он сохраняет порядок добавления)
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[4]: сгруппировать символы в строке
От: Vzhyk  
Дата: 21.02.13 18:05
Оценка:
On 21.02.2013 18:36, PZI wrote:

> Бежишь по строке и считаешь, что каждый символ это ключ. Вытаскиваешь из

> мапки по этому ключу значение, которое из себя представляет
> целочисленное число(количество повторений), если нет такого значения,
> добавляешь со значением 1, если есть — инкрементишь.
Это всего-лишь гистограмма. Жесть, так ее обозвать — ЛинкедХешМап.
А зачем мапка?
Posted via RSDN NNTP Server 2.1 beta
Re: сгруппировать символы в строке
От: batu Украина  
Дата: 21.02.13 18:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>например есть "vvabbcbcc"

А>Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"
А>Есть какой-то быстрый способ? Мне дали 5 минут написать метод
Считаешь количество в цикле начиная с первой.. Уже посчитаные превращаешь в пустое что б не путалось.. Восстанавливать совсем легко.. Каждую букву столько раз сколько она встретилась..
Re[5]: сгруппировать символы в строке
От: PZI  
Дата: 21.02.13 18:34
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>On 21.02.2013 18:36, PZI wrote:


>> Бежишь по строке и считаешь, что каждый символ это ключ. Вытаскиваешь из

>> мапки по этому ключу значение, которое из себя представляет
>> целочисленное число(количество повторений), если нет такого значения,
>> добавляешь со значением 1, если есть — инкрементишь.
V>Это всего-лишь гистограмма. Жесть, так ее обозвать — ЛинкедХешМап.

Название отражает именно то, что она из себя представляет.

V>А зачем мапка?


Ваши варианты?
Re[6]: сгруппировать символы в строке
От: Vzhyk  
Дата: 21.02.13 18:50
Оценка:
On 21.02.2013 21:34, PZI wrote:

> Название отражает именно то, что она из себя представляет.

Карта, связанная хешем? Не, построить гистограмму сильно понятнее.

> Ваши варианты?

Массив.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: сгруппировать символы в строке
От: Vzhyk  
Дата: 21.02.13 18:54
Оценка:
On 21.02.2013 21:34, PZI wrote:

> V>А зачем мапка?

>
> Ваши варианты?
Точнее, мапка имеет смысл, если символы могут быть любыми из UTF8,
фактически ею мы проэмулируем разреженный массив.
Если же мы в небольшом алфавите, то нафиг не нужна.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: сгруппировать символы в строке
От: PZI  
Дата: 21.02.13 18:54
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>On 21.02.2013 21:34, PZI wrote:


>> Название отражает именно то, что она из себя представляет.

V>Карта, связанная хешем? Не, построить гистограмму сильно понятнее.

Причем тут гистограмма?
Вы как я понимаю, мимо проходили и к жабе отношения не имеете? — тут почитайте

>> Ваши варианты?

V>Массив.
Дальше развейте плиз мысль. Свою мапку изобретать будем?
Re[7]: сгруппировать символы в строке
От: PZI  
Дата: 21.02.13 18:57
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>On 21.02.2013 21:34, PZI wrote:


>> V>А зачем мапка?

>>
>> Ваши варианты?
V>Точнее, мапка имеет смысл, если символы могут быть любыми из UTF8,
V>фактически ею мы проэмулируем разреженный массив.
V>Если же мы в небольшом алфавите, то нафиг не нужна.

вот это как раз и есть жесть...
Re[8]: сгруппировать символы в строке
От: Vzhyk  
Дата: 21.02.13 18:57
Оценка:
On 21.02.2013 21:57, PZI wrote:

> вот это как раз и есть жесть...

Почему?
Posted via RSDN NNTP Server 2.1 beta
Re[9]: сгруппировать символы в строке
От: PZI  
Дата: 21.02.13 19:04
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>On 21.02.2013 21:57, PZI wrote:


>> вот это как раз и есть жесть...

V>Почему?

да мне бы просто даже в голову не пришло закладываться на однобайтные кодировки. Ксате, попробуйте реализовать ваш алгоритм в жабе для русских букв
Re[10]: сгруппировать символы в строке
От: Vzhyk  
Дата: 22.02.13 08:36
Оценка:
On 21.02.2013 22:04, PZI wrote:

> да мне бы просто даже в голову не пришло закладываться на однобайтные

> кодировки.
Я говорил про размер алфавита, который следует обрабатывать.
И в зависимости от данных, можно обойтись одним массивом, двумя,
разреженным массивом, мапой.
Все зависит от конкретной задачи. Лично я бы мапу рассматривал последней.
Posted via RSDN NNTP Server 2.1 beta
Re: сгруппировать символы в строке
От: jazzer Россия Skype: enerjazzer
Дата: 22.02.13 10:23
Оценка: +2
Здравствуйте, Аноним, Вы писали:

А>например есть "vvabbcbcc"

А>Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"
А>Есть какой-то быстрый способ? Мне дали 5 минут написать метод

2 массива размером character set (т.е. 256 для ASCII) — один массив счетчиков и один массив для хранения последовательности. O(n).
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: сгруппировать символы в строке
От: Vzhyk  
Дата: 22.02.13 11:18
Оценка:
On 22.02.2013 13:23, jazzer wrote:

> 2 массива размером character set (т.е. 256 для ASCII) — один массив

> счетчиков и один массив для хранения последовательности. O(n).
Затем тебе 256, если алфавит английского около 30?
Posted via RSDN NNTP Server 2.1 beta
Re: сгруппировать символы в строке
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.02.13 11:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>например есть "vvabbcbcc"

А>Надо получить строку где сохранена "последовательность" — т.е. "vvabbbccc"

Все передельно просто и понятно. Решается за O(n) по времени и O(2*размер_словаря) по памяти. Решение: 2 массива размера словаря, один для подсчета элементов, второй для запоминания последовательности появления элементов. Идем по исходному массиву и делаем для каждого из элементов, если в массиве для подсчета занчение не нулевое, то увеличиваем его на 1; если нулевое — увеличиваем на 1 и добавляем элемент в массив восстановления последовательности. Восстанавливаем массив.

А>Есть какой-то быстрый способ? Мне дали 5 минут написать метод


И ты не справился??? Лишний раз убеждаюс в правильности таких вопросов
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.