fork download
  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "fmt"
  6. "os"
  7. )
  8.  
  9. func main() {
  10. scanner := bufio.NewScanner(os.Stdin)
  11.  
  12. for scanner.Scan() {
  13. line := scanner.Text()
  14. if hasExactlyTwice(line) {
  15. fmt.Println(line)
  16. }
  17. }
  18.  
  19. if err := scanner.Err(); err != nil {
  20. fmt.Println("read error:", err)
  21. }
  22. }
  23.  
  24. func hasExactlyTwice(s string) bool {
  25. counter := make(map[rune]int)
  26. two := 0
  27.  
  28. for _, ch := range s {
  29. counter[ch]++
  30. switch counter[ch] {
  31. case 2:
  32. two++
  33. case 3:
  34. two--
  35. }
  36. }
  37.  
  38. return two > 0
  39. }
  40.  
Success #stdin #stdout 0.01s 5324KB
stdin
asdf
fdas
asds
d fm
dfaa
aaaa
aabb
aaabb
stdout
asds
dfaa
aabb
aaabb