Go 语言 ACM 模式常用代码
常用的包
1 2 3 4 5 6 7 8
| import( "fmt" "os" "bufio" "sort" "strings" )
|
处理基本输入
1 2 3 4 5 6 7 8 9 10
| func main(){ in := bufio.NewScanner(os.Stdin) in.Scan() for in.Scan(){ str := in.Text() s := strings.Split(str, " ") sort.Strings(s) fmt.Println(strings.Join(s," ")) } }
|
fmt.Scan
1 2
| var a,b int fmt.Scan(&a,&b)
|
这个函数用于一个或多个数据绑定。它会用空格分割 stdin 输入数据,并把换行符算作空格,然后传递给本函数的参数。
fmt.Scanln
1 2
| var a,b int fmt.Scanln(&a,&b)
|
这个函数类似于 Scan,但是它会在遇到换行时停止扫描,必须在最后一项之后有换行符或 EOF。
fmt.Scanf
1 2
| var x int fmt.Scanf("%d",&x)
|
这个函数用于对空格分割的字符串或其他数据类型进行格式化,它会把换行符也当作输入的!由于数据是先缓存,然后再传递给参数,所以如果格式中没有换行符,但输入回车换行,会保存到下一个参数中!
强制类型转换
1 2
| x := []rune(str) str := string(x)
|
字符串操作
字符串与 rune 切片转换
1 2
| x := []rune(str) str := string(x)
|
字符串查找
1 2
| strings.IndexByte(str, byte) strings.Index(str,str2)
|
字符串分割
1
| strings.Split(str, str2)
|
大小写切换
1 2
| strings.ToLower(str) strings.ToUpper(str)
|
字符串删除
字符串反转
1 2 3 4 5 6 7
| func reverseString(s string) string { runes := []rune(s) for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 { runes[i], runes[j] = runes[j], runes[i] } return string(runes) }
|
切片排序
升序排序
1 2 3
| sort.Ints([]int) sort.Float64s([]float64) sort.Strings([]string)
|
降序排序
1 2 3
| sort.Sort(sort.Reverse(sort.IntSlice([]int))) sort.Sort(sort.Reverse(sort.Float64Slice([]float64))) sort.Sort(sort.Reverse(sort.StringSlice([]string)))
|