File tree Expand file tree Collapse file tree 2 files changed +108
-0
lines changed
Expand file tree Collapse file tree 2 files changed +108
-0
lines changed Original file line number Diff line number Diff line change 1+ /* 字符串中的单词数
2+ 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
3+
4+ 请注意,你可以假定字符串里不包括任何不可打印的字符。
5+
6+ 示例:
7+
8+ 输入: "Hello, my name is John"
9+ 输出: 5 */
10+
11+ func countSegments (s string ) int {
12+ count := 0
13+ for i , v := range s {
14+ if v == ' ' && i > 0 && s [i - 1 ] != ' ' {
15+ count ++
16+ }
17+ }
18+ if len (s ) > 0 && s [len (s )- 1 ] != ' ' {
19+ count ++
20+ }
21+ return count
22+ }
Original file line number Diff line number Diff line change 1+ import "strconv"
2+
3+ /* 最小时间差
4+ 给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。
5+
6+
7+ 示例 1:
8+
9+ 输入: ["23:59","00:00"]
10+ 输出: 1
11+
12+ 备注:
13+
14+ 列表中时间数在 2~20000 之间。
15+ 每个时间取值在 00:00~23:59 之间。 */
16+
17+ import "strconv"
18+
19+ /* 最小时间差
20+ 给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。
21+
22+
23+ 示例 1:
24+
25+ 输入: ["23:59","00:00"]
26+ 输出: 1
27+
28+ 备注:
29+
30+ 列表中时间数在 2~20000 之间。
31+ 每个时间取值在 00:00~23:59 之间。 */
32+
33+ func findMinDifference (timePoints []string ) int {
34+ if len (timePoints ) > 1440 {
35+ return 0
36+ }
37+ t := func (t string ) int {
38+ h , _ := strconv .Atoi (t [:2 ])
39+ m , _ := strconv .Atoi (t [3 :])
40+ return h * 60 + m
41+ }
42+ f := func (t1 , t2 int ) int {
43+ dt := t1 - t2
44+ if dt < 0 {
45+ dt = - dt
46+ }
47+ if dt > 720 {
48+ return 1440 - dt
49+ }
50+ return dt
51+ }
52+ minutes := make ([]int , len (timePoints ))
53+ for i , v := range timePoints {
54+ minutes [i ] = t (v )
55+ }
56+ minutes = Sort (minutes )
57+ min := f (minutes [0 ], minutes [len (minutes )- 1 ])
58+ for i := 1 ; i < len (minutes ); /* && min != 0 */ i ++ {
59+ dt := f (minutes [i ], minutes [i - 1 ])
60+ if dt < min {
61+ min = dt
62+ }
63+ }
64+ return min
65+ }
66+
67+ func Sort (t []int ) []int {
68+ r := make ([]int , 0 )
69+ if len (t ) < 2 {
70+ return append (r , t ... )
71+ }
72+ t1 , t2 := Sort (t [:len (t )/ 2 ]), Sort (t [len (t )/ 2 :])
73+ i , j := 0 , 0
74+ for i < len (t1 ) && j < len (t2 ) {
75+ if t1 [i ] < t2 [j ] {
76+ r = append (r , t1 [i ])
77+ i ++
78+ } else {
79+ r = append (r , t2 [j ])
80+ j ++
81+ }
82+ }
83+ r = append (r , t1 [i :]... )
84+ r = append (r , t2 [j :]... )
85+ return r
86+ }
You can’t perform that action at this time.
0 commit comments