1、 翻转一个字符串
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)
}
2、 判断两个给定的字符串排序后是否一致
3、 判断字符串中字符是否全都不同
func IsUniqueChars(str string) bool {
if len(str) > 128 {
return false
}
charSet := make(map[rune]bool)
for _, char := range str {
if _, found := charSet[char]; found {
return false
}
charSet[char] = true
}
return true
}
func IsUniqueChars(str string) bool {
for _, char := range str {
if strings.IndexRune(str, char) != strings.LastIndexRune(str, char) {
return false
}
}
return true
}
4、交替打印数字和字母
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
letterCh := make(chan struct{})
numberCh := make(chan struct{})
wg.Add(1)
go printLetters(letterCh, numberCh, &wg)
wg.Add(1)
go printNumbers(letterCh, numberCh, &wg)
letterCh <- struct{}{}
wg.Wait()
}
func printLetters(letterCh, numberCh chan struct{}, wg *sync.WaitGroup) {
defer wg.Done()
letters := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i := 0; i < len(letters); i++ {
<-letterCh
fmt.Printf("%c ", letters[i])
numberCh <- struct{}{}
}
}
func printNumbers(letterCh, numberCh chan struct{}, wg *sync.WaitGroup) {
defer wg.Done()
numbers := "123456789"
for i := 0; i < len(numbers); i++ {
<-numberCh
fmt.Printf("%c ", numbers[i])
letterCh <- struct{}{}
}
}
5、 字符串对位交换
6、 返回一个数组所有可能排列
package main
import (
"fmt"
)
func permute(nums []int) [][]int {
result := [][]int{}
generatePermutations(nums, 0, &result)
return result
}
func generatePermutations(nums []int, index int, result *[][]int) {
if index == len(nums)-1 {
temp := make([]int, len(nums))
copy(temp, nums)
*result = append(*result, temp)
return
}
for i := index; i < len(nums); i++ {
nums[index], nums[i] = nums[i], nums[index]
generatePermutations(nums, index+1, result)
nums[index], nums[i] = nums[i], nums[index]
}
}
func main() {
nums := []int{1, 2, 3}
result := permute(nums)
for _, perm := range result {
fmt.Println(perm)
}
}
7、有两个切片 []int{1,3,5,7}. []int{2,4,6,8,9} 将两个切片按照递增合并为一个新的切片[]int{1,2,3,4,5,6,7,8,9}
func main() {
slice1 := []int{1, 3, 5, 7}
slice2 := []int{2, 4, 6, 8, 9}
mergedSlice := append(slice1, slice2...)
sort.Ints(mergedSlice)
fmt.Println(mergedSlice)
}
语法题