-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.go
45 lines (41 loc) · 1011 Bytes
/
test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package main
import (
"bufio"
"fmt"
"os"
"regexp"
"strconv"
"strings"
)
// Проверка наличия других символов, которые не из английского и русского алфавитов
func strValid(s string) bool {
return regexp.MustCompile(`^[A-Za-zА-Яа-я]*$`).MatchString(s)
}
// Сворачивание строки
func strSort(s string) (ss string) {
sr := []rune(s)
for sym := 'A'; sym <= 'я'; sym++ {
if sym == '{' { //в unicode "{" идёт сразу после "z"
sym = 'А' //русское А!
}
for i := range sr {
if sr[i] == sym {
count := strconv.Itoa(strings.Count(s, string(sym)))
ss += string(sr[i]) + count
break
}
}
}
return
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
str := scanner.Text()
valid := strValid(str)
if !valid {
fmt.Println("Только латиница или кириллица без пробелов!")
} else {
fmt.Println(strSort(str))
}
}