* Повторяющиеся символы

go package main

Короткий ответ

Что ответить на собеседовании

go package main

Подробный разбор

Ответ с пояснениями

Условие

/**

  • Повторяющиеся символы
  • Нужно написать функцию, которая принимает на вход строку, а на выходе возвращает
  • для каждого уникального символа максимальное число его беспрерывных повторений.
  • Input: qqffbbaaaffc
  • Output: a:4 b:1 f:2 c:1
  • Input: bbbbbb
  • Output: b:6
  • Input: abc
  • Output: a:1 b:1 c:1
  • Input: aabbcc
  • Output: a:2 b:2 c:2
  • Input: aaabbbccc
  • Output: a:3 b:3 c:3
  • Input: a
  • Output: a:1
  • Input: ""
  • Output: */

Ответ

go package main

import ( "fmt" )

func maxRepeats(s string) map[rune]int { result := make(map[rune]int) if len(s) == 0 { return result }

var prev rune
count := 0

for i, ch := range s {
	if i == 0 {
		prev = ch
		count = 1
		continue
	}

	if ch == prev {
		count++
	} else {
		if count > result[prev] {
			result[prev] = count
		}
		prev = ch
		count = 1
	}
}

// Проверяем последний символ
if count > result[prev] {
	result[prev] = count
}

return result

}

func main() { tests := []string{ "qqffbbaaaffc", "bbbbbb", "abc", "aabbcc", "aaabbbccc", "a", "", }

for _, test := range tests {
	res := maxRepeats(test)
	fmt.Printf("Input: %s\nOutput: ", test)
	for ch, cnt := range res {
		fmt.Printf("%c:%d ", ch, cnt)
	}
	fmt.Println("\n")
}

}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее