题解 | #单词倒排#
单词倒排
https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836
package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) scanner.Scan() input := scanner.Bytes() nf := func(b byte) bool { if b >= 'A' && b <= 'Z' { return false } if b >= 'a' && b <= 'z' { return false } return true } l := 0 for _, v := range input { if nf(v) { v = ' ' } if l == 0 && v != ' ' { input[l] = v l++ continue } if v == ' ' && l > 0 && input[l-1] == ' ' { continue } input[l] = v l++ } input = input[:l] last := len(input) result := make([]string, 0) for i := len(input) - 1; i >= 0; i-- { if input[i] == ' ' { result = append(result, string(input[i+1:last])) last = i } if i == 0 { result = append(result, string(input[:last])) } } for i, v := range result { fmt.Print(v) if i != len(result)-1 { fmt.Print(" ") } } }