3 回答

TA貢獻(xiàn)2019條經(jīng)驗 獲得超9個贊
請告訴我我的方法是否正確?
如果您只想將字符串(空格分隔的整數(shù))轉(zhuǎn)換為 []int
func AizuArray(A string, N string) []int {
a := strings.Split(A, " ")
n, _ := strconv.Atoi(N) // int 32bit
b := make([]int, n)
for i, v := range a {
b[i], err = strconv.Atoi(v)
if err != nil {
//proper err handling
//either b[i] = -1 (in case positive integers)
}
}
return b
}
那么你的方法是正確的。
我處理這個問題。
在這個問題的上下文中,您想從 STDIN 獲取輸入,所以應(yīng)該這樣做,
package main
import (
"fmt"
)
func insertionSort(arr []int) {
//do further processing here.
fmt.Println(arr)
}
func main() {
var N int
fmt.Scanf("%d", &N)
b := make([]int, N)
for iter:=0;iter<N;iter++ {
fmt.Scanf("%d",&b[iter])
}
insertionSort(b)
}

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊
我認(rèn)為你把事情復(fù)雜化了,除非我遺漏了什么。
https://play.golang.org/p/HLvV8R1Ux-
package main
import (
"fmt"
"strings"
"strconv"
)
func main() {
A := "5 2 4 6 1 3"
strs := strings.Split(A, " ")
ary := make([]int, len(strs))
for i := range ary {
ary[i], _ = strconv.Atoi(strs[i])
}
fmt.Println(ary)
}

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊
這是一個更簡單的示例,您不必拆分字符串:
str := "123456"
if _, err := strconv.Atoi(str); err != nil {
// do stuff, in case str can not be converted to an int
}
var slice []int // empty slice
for _, digit := range str {
slice = append(slice, int(digit)-int('0')) // build up slice
}
為什么需要int('0')? 因為int()會將字符轉(zhuǎn)換為對應(yīng)的 ASCII 碼(此處為 ascii 表)。對于 0,即 48。因此,您必須從“ascii 十進(jìn)制”中您的數(shù)字對應(yīng)的任何內(nèi)容中減去 48。
- 3 回答
- 0 關(guān)注
- 258 瀏覽
添加回答
舉報