题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
var input string
fmt.Scanln(&input)
coordinates := strings.Split(input, ";")
x, y := 0, 0
for _, coordinate := range coordinates {
if len(coordinate) < 2 {
continue
}
direction := coordinate[0]
value, err := strconv.Atoi(coordinate[1:])
if err != nil {
continue
}
switch direction {
case 'A':
x -= value
case 'D':
x += value
case 'W':
y += value
case 'S':
y -= value
}
}
fmt.Printf("%d,%d\n", x, y)
}
这个程序首先读取输入字符串,然后使用分号将其拆分为坐标数组。接下来,它遍历每个坐标并进行处理。对于每个坐标,它检查方向和值的有效性,并根据方向更新x和y坐标。最后,它打印出最终的坐标结果。
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
var input string
fmt.Scanln(&input)
coordinates := strings.Split(input, ";")
x, y := 0, 0
for _, coordinate := range coordinates {
if isValid(coordinate) {
direction := coordinate[0]
value, err := strconv.Atoi(coordinate[1:])
if err != nil {
continue
}
switch direction {
case 'A':
x -= value
case 'D':
x += value
case 'W':
y += value
case 'S':
y -= value
}
}
}
fmt.Printf("%d,%d\n", x, y)
}
func isValid(coordinate string) bool {
if len(coordinate) < 2 {
return false
}
direction := coordinate[0]
value := coordinate[1:]
if direction != 'A' && direction != 'D' && direction != 'W' && direction != 'S' {
return false
}
_, err := strconv.Atoi(value)
if err != nil {
return false
}
return true
}
查看7道真题和解析
