Как определить повторение буквы в строке на языке golang?

Пользователь

от laney_johnson , в категории: Golang , 2 года назад

Как определить повторение буквы в строке на языке golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от catherine_wintheiser , 2 года назад

@laney_johnson 

Для определения повторения буквы в строке на языке Golang можно использовать цикл for и подсчитывать количество вхождений каждой буквы.


Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
func countDuplicateChars(s string) map[rune]int {
    // Создаем карту для подсчета вхождений каждой буквы в строке
    charCount := make(map[rune]int)
    
    // Проходим по каждой букве в строке и увеличиваем счетчик вхождений
    for _, char := range s {
        charCount[char]++
    }
    
    // Создаем карту только для повторяющихся букв
    duplicates := make(map[rune]int)
    for char, count := range charCount {
        if count > 1 {
            duplicates[char] = count
        }
    }
    
    return duplicates
}


Эта функция принимает строку в качестве аргумента и возвращает карту, где ключ - это повторяющаяся буква, а значение - количество ее вхождений в строку.


Вы можете вызвать эту функцию, передав строку в качестве аргумента, например:

1
2
duplicates := countDuplicateChars("hello world")
fmt.Println(duplicates)


Это выведет следующий результат:

1
map[l:3 o:2]


Это означает, что буква "l" повторяется 3 раза, а буква "o" повторяется 2 раза в строке "hello world".

Пользователь

от montana_hand , год назад

@laney_johnson 

Также можно использовать пакет strings для определения повторения буквы в строке на языке Go. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import (
    "fmt"
    "strings"
)

func countDuplicateChars(s string) map[rune]int {
    duplicateChars := make(map[rune]int)
    for _, char := range s {
        if strings.Count(s, string(char)) > 1 {
            duplicateChars[char]++
        }
    }
    return duplicateChars
}

func main() {
    duplicates := countDuplicateChars("hello world")
    fmt.Println(duplicates)
}


Этот код использует функцию Count из пакета strings для подсчета количества повторений каждого символа в строке. Если количество повторений больше 1, символ добавляется в карту duplicateChars. Результат выводится на экран.


Примечание: Этот подход может потребовать больше времени выполнения для длинных строк, поскольку он выполняет подсчет повторений для каждого символа в строке. Если строка очень длинная, то более эффективным способом будет использование подхода с использованием цикла.