strings.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "os"
  6. "strings"
  7. "time"
  8. )
  9. func main() {
  10. // foo1()
  11. // foo2()
  12. // foo3()
  13. // foo4()
  14. // foo5()
  15. // foo6()
  16. // foo7()
  17. // foo8()
  18. // foo9()
  19. // foo10()
  20. foo12()
  21. }
  22. func foo1() {
  23. var val rune
  24. fmt.Scanf("%c", &val)
  25. // fmt.Println(string(val))
  26. if val >= '0' && val <= '9' {
  27. fmt.Println("YES")
  28. } else {
  29. fmt.Println("NO")
  30. }
  31. }
  32. func foo2() {
  33. var val rune
  34. fmt.Scanf("%c", &val)
  35. for letter := 'a'; letter <= val; letter++ {
  36. fmt.Print(string(letter), " ")
  37. }
  38. }
  39. func foo3() {
  40. var val rune
  41. fmt.Scanf("%c", &val)
  42. for letter := val; letter <= 'z'; letter++ {
  43. fmt.Print(string(letter), " ")
  44. }
  45. }
  46. func foo4() {
  47. var val rune
  48. fmt.Scanf("%c", &val)
  49. if val >= 'A' && val <= 'Z' {
  50. fmt.Print(string(val + 32))
  51. } else if val >= 'a' && val <= 'z' {
  52. fmt.Print(string(val - 32))
  53. }
  54. }
  55. func foo5() {
  56. var name string
  57. var price float64
  58. var amount int
  59. fmt.Scan(&name, &price, &amount)
  60. fmt.Printf("Стоимость %s: %g * %d = %g руб.", name, price, amount, price*float64(amount))
  61. }
  62. func foo6() {
  63. scanner := bufio.NewScanner(os.Stdin)
  64. scanner.Scan()
  65. str := scanner.Text()
  66. fmt.Println(strings.Count(str, " ") + 1)
  67. }
  68. // -----------------------------------------------------
  69. func foo7() {
  70. var str string
  71. fmt.Scan(&str)
  72. s := []rune(str)
  73. for i := len(s) - 1; i >= 0; i-- {
  74. fmt.Print(string(s[i]))
  75. }
  76. }
  77. // Функция с использованием defer
  78. func reverseWithDefer(s string) {
  79. for _, val := range s {
  80. defer func(v rune) {
  81. _ = string(v) // вместо вывода
  82. }(val)
  83. }
  84. }
  85. // Функция проход с конца
  86. func reverseWithAccumulation(s string) {
  87. for i := len(s) - 1; i >= 0; i-- {
  88. _ = string(s[i]) // вместо вывода
  89. }
  90. }
  91. func testSpeed(s string) {
  92. start := time.Now()
  93. reverseWithDefer(s)
  94. durationDefer := time.Since(start)
  95. fmt.Println(durationDefer)
  96. }
  97. // -----------------------------------------------------
  98. func foo8() {
  99. /*
  100. var position int
  101. scanner := bufio.NewScanner(os.Stdin)
  102. scanner.Scan()
  103. str := scanner.Text()
  104. fmt.Scan(&position)
  105. strRune := []rune(str)
  106. for i := 0; i < len(strRune); i++ {
  107. if i != position-1 {
  108. fmt.Print(string(strRune[i]))
  109. }
  110. }
  111. */
  112. var str string
  113. var position int
  114. fmt.Scan(&str, &position)
  115. strRune := []rune(str)
  116. for i := 0; i < len(strRune); i++ {
  117. if i != position-1 {
  118. fmt.Print(string(strRune[i]))
  119. }
  120. }
  121. }
  122. func foo9() {
  123. /*
  124. scanner := bufio.NewScanner(os.Stdin)
  125. scanner.Scan()
  126. str := scanner.Text()
  127. strRune := []rune(str)
  128. res := "-1"
  129. for i := 0; i < len(strRune); i++ {
  130. if strRune[i] == 'x' {
  131. res = "x"
  132. break
  133. }
  134. if strRune[i] == 'w' {
  135. res = "w"
  136. break
  137. }
  138. }
  139. fmt.Println(res)
  140. */
  141. var str string
  142. fmt.Scan(&str)
  143. for _, element := range str {
  144. if string(element) == "x" || string(element) == "w" {
  145. fmt.Println(string(element))
  146. return
  147. }
  148. }
  149. fmt.Print(-1)
  150. }
  151. // Функция палиндром
  152. func foo10() {
  153. var s, rs string
  154. fmt.Scan(&s)
  155. for i := 0; i < len(s); i++ {
  156. rs = string(s[i]) + rs
  157. }
  158. if rs == s {
  159. fmt.Println("YES")
  160. } else {
  161. fmt.Println("NO")
  162. }
  163. }
  164. // Еще один вариант палиндрома
  165. func foo11() {
  166. scanner := bufio.NewScanner(os.Stdin)
  167. scanner.Scan()
  168. s := scanner.Text()
  169. for i := 0; i < len(s)/2; i++ {
  170. if s[i] != s[len(s)-1-i] {
  171. break
  172. }
  173. }
  174. }
  175. // Поиск повторяющейся буквы
  176. func foo12() {
  177. var s string
  178. fmt.Scan(&s)
  179. for i := 0; i < len(s); i++ {
  180. simbol := s[i]
  181. for j := i + 1; j < len(s); j++ {
  182. if simbol == s[j] {
  183. fmt.Println(string(simbol))
  184. break
  185. }
  186. }
  187. }
  188. }