Skip to content

Commit f2b05f4

Browse files
author
arbent
committed
2018/11/16
1 parent 2049279 commit f2b05f4

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
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+
}

0 commit comments

Comments
 (0)