我一直在尝试HackerRank,其中问题通常需要将整数行读入数组(切片).
对于许多问题,我的解析代码最终比解决方案的算法更大.例如,Sherlock和Array就是这种情况
关于如何简洁地将空格分隔的整数行解析成切片的任何想法?fmt.Scanf不支持切片,使用时bufio我得到很长的解决方案.
一些要求:
注意: 解析器应该只使用一行而不是完整输入.
1)读取字符串
\n\n2)前置[和附加]
3)将json解析为[]int?
\n\nvar input = "1,2,3"\nvar answer []int\nj := []byte(fmt.Sprintf("[%s]",input))\nerr:= json.Unmarshal(j, &input)\nif err != nil {\n panic(err)\n}\nfor k,v := range input {\n fmt.Printf("Element \xe2\x84\x96%v is %v\\n", k,v)\n}\nRun Code Online (Sandbox Code Playgroud)\n\n还使用分割字符串(https://godoc.org/strings#Split)\n和https://godoc.org/strconv#ParseInt
\n\ninput:= "1,2,3"\ntemp := strings.Split(input, ",")\nvar answer []int\n\nfor _,v := range temp {\n i,err := strconv.ParseInt(v)\n if err != nill {\n panic(err)\n }\n answer = append(answer, i)\n}\nRun Code Online (Sandbox Code Playgroud)\n\nUPD:刚刚发现数字是空格分隔的。\n所以,这段代码必须执行以下操作:
\n\ninput:= "1 2 3"\ntemp := strings.Split(input, " ")\nvar answer []int\n\nfor _,v := range temp {\n i,err := strconv.ParseInt(v)\n if err != nill {\n panic(err)\n }\n answer = append(answer, i)\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |