Как проверить, сгруппированы ли символы в строке? - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу иметь возможность проверить, сгруппированы ли символы в строке.

Определение группирования: не повторяется где-либо еще, кроме кластера.В «AABBBBACDDD» он не сгруппирован, так как последний «A» не входит в его кластер (первый набор A).

Символы не обязательно должны быть в алфавитном порядке.

Например:

AAABBBBBCCC → сгруппировано

AABBBBACDDD → is не сгруппировано


Определенно задействован цикл, но я не знаю условий для проверки, является ли он группой или нет

1 Ответ

2 голосов
/ 17 апреля 2019

Это звучит как вопрос об алгоритмах больше, чем C ++.Таким образом, алгоритм будет таким, (псевдокод).Вы можете написать код C ++ для этого (я могу помочь вам, если хотите):

function is_grouped(str):
  seen_letters = {} # set of seen letters so far
  last_letter = None
  for c in str:
    if last_letter == c:  # if it is the same letter as before continue
      continue
    if last_letter != c && c in seen_letters:  # seen before and a new cluster
      return false
    seen_letters.add(c) # new unsee cluster
    last_letter = c
  return true
...