File tree Expand file tree Collapse file tree 3 files changed +141
-0
lines changed
src/0151.Reverse-Words-in-a-String Expand file tree Collapse file tree 3 files changed +141
-0
lines changed Original file line number Diff line number Diff line change 1+ # [ 1. Add Sum] [ title ]
2+
3+ ## Description
4+
5+ Given an input string, reverse the string word by word.
6+
7+ ** Example 1:**
8+
9+ ```
10+ Input: "the sky is blue"
11+ Output: "blue is sky the"
12+ ```
13+
14+ ** Example 2:**
15+
16+ ```
17+ Input: " hello world! "
18+ Output: "world! hello"
19+ Explanation: Your reversed string should not contain leading or trailing spaces.
20+ ```
21+
22+ ** Example 2:**
23+
24+ ```
25+ Input: "a good example"
26+ Output: "example good a"
27+ Explanation: You need to reduce multiple spaces between two words to a single space in the reversed string.
28+ ```
29+ ** Tags:** Math, String
30+
31+
32+
33+ ## 题意
34+ > 给定一个字符串,请将字符串中单词的顺序倒过来。
35+ > 注意:
36+
37+ - 单词是指连续非空格字符;
38+ - 单词之间可能包含多余空格,请在结果中删除多余空格,使得单词之间仅包含一个空格;
39+ - 请删除字符串首尾多余的空格;
40+
41+ ## 题解
42+
43+ ### 思路1
44+ > 。。。。
45+
46+ ``` go
47+ func reverseWords (s string ) string {
48+ // 用自带的函数拆分数组
49+ words := strings.Fields (s)
50+
51+ i := 0
52+ j := len (words) - 1
53+
54+ for i < j {
55+ // 左右22交换
56+ words[i], words[j] = words[j], words[i]
57+ i++
58+ j--
59+ }
60+
61+ return strings.Join (words, " " )
62+ }
63+
64+ ```
65+
66+ ### 思路2
67+ > 思路2
68+ ``` go
69+
70+ ```
71+
72+ ## 结语
73+
74+ 如果你同我一样热爱数据结构、算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:[ awesome-golang-leetcode] [ me ]
75+
76+ [ title ] : https://leetcode.com/problems/two-sum/description/
77+ [ me ] : https://github.com/kylesliu/awesome-golang-leetcode
Original file line number Diff line number Diff line change 1+ package Solution
2+
3+ import (
4+ "strings"
5+ )
6+
7+ func reverseWords (s string ) string {
8+ // 用自带的函数拆分数组
9+ words := strings .Fields (s )
10+
11+ i := 0
12+ j := len (words ) - 1
13+
14+ for i < j {
15+ // 左右22交换
16+ words [i ], words [j ] = words [j ], words [i ]
17+ i ++
18+ j --
19+ }
20+
21+ return strings .Join (words , " " )
22+ }
Original file line number Diff line number Diff line change 1+ package Solution
2+
3+ import (
4+ "reflect"
5+ "strconv"
6+ "testing"
7+ )
8+
9+ func TestSolution (t * testing.T ) {
10+ // 测试用例
11+ cases := []struct {
12+ name string
13+ inputs string
14+ expect string
15+ }{
16+ {"TestCase" , "the sky is blue" , "blue is sky the" },
17+ {"TestCase" , " hello world! " , "world! hello" },
18+ {"TestCase" , "a good example" , "example good a" },
19+ {"TestCase" , "eht yks si eulb" , "blue is sky the" },
20+ }
21+
22+ // 开始测试
23+ for i , c := range cases {
24+ t .Run (c .name + " " + strconv .Itoa (i ), func (t * testing.T ) {
25+ got := reverseWords (c .inputs )
26+ if ! reflect .DeepEqual (got , c .expect ) {
27+ t .Fatalf ("expected: %v, but got: %v, with inputs: %v" ,
28+ c .expect , got , c .inputs )
29+ }
30+ })
31+ }
32+ }
33+
34+ // 压力测试
35+ func BenchmarkSolution (b * testing.B ) {
36+
37+ }
38+
39+ // 使用案列
40+ func ExampleSolution () {
41+
42+ }
You can’t perform that action at this time.
0 commit comments