/
быстрый_поиск.go
61 lines (47 loc) · 2.11 KB
/
быстрый_поиск.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
*Задача для тех кто хорошо справляется с курсом.
*После урока про сортировки Маша решила применить полученные знания с пользой.
*У неё есть тетрадка, куда она записывает всех, кому за что-нибудь благодарна.
*Список может быть очень длинным, но Маша его упорядочила по алфавиту (это называется - лексикографический порядок).
*Помогите ей организовать быстрый поиск по этому списку.
*Формат ввода
*На первой строке передается количество людей в списке - натуральное число.
*Затем на следующих строках идет список людей. А после списка - перечень префиксов всех тех, кого надо найти.
*Перечень префиксов может быть произвольной длины. Пустая строка вместо префикса значит что префиксы закончились.
*Формат вывода
*Для каждого префикса необходимо вывести первую фамилию с таким префиксом, или фразу Не найдено.
*/
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func get_search(search string, slice []string) string {
for _, people := range slice {
if strings.Contains(people, search) {
return people
}
}
return "Не найдено"
}
func main() {
var n int
fmt.Scanln(&n)
reader := bufio.NewReader(os.Stdin)
slice := []string{}
for i := 0; i < n; i++ {
tmp, _ := reader.ReadString('\n')
tmp = strings.TrimSpace(tmp)
slice = append(slice, tmp)
}
for {
tmp, _ := reader.ReadString('\n')
tmp = strings.TrimSpace(tmp)
if tmp == "" {
break
}
fmt.Println(get_search(tmp, slice))
}
}