Skip to content

Commit 2f9d2a5

Browse files
committed
update
1 parent f0f5cdf commit 2f9d2a5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+363
-0
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.

01xxxx/0005.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
func longestPalindrome(s string) string {
2+
if 0 == len(s) {
3+
return ""
4+
}
5+
t := []byte{'#'}
6+
for _, c := range []byte(s) {
7+
t = append(t, c)
8+
t = append(t, '#')
9+
}
10+
11+
m, mi := 0, 0
12+
for i := 0; i < len(t); i++ {
13+
k := i
14+
if len(t)-i-1 < k {
15+
k = len(t) - i - 1
16+
}
17+
j := 1
18+
for ; j <= k; j++ {
19+
if t[i+j] != t[i-j] {
20+
break
21+
}
22+
}
23+
if j > m {
24+
m, mi = j, i
25+
}
26+
}
27+
var i int
28+
if mi&1 == 1 {
29+
i = mi/2 + 1 - m/2
30+
} else {
31+
i = mi/2 - m/2
32+
}
33+
return s[i : i+m-1]
34+
}

01xxxx/0006.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
func convert(s string, numRows int) string {
2+
if numRows <= 1 {
3+
return s
4+
}
5+
out := []byte{}
6+
n := (numRows - 1) * 2
7+
for i := 0; i < numRows; i++ {
8+
for j := i; j < len(s); j += n {
9+
out = append(out, s[j])
10+
k := j + n - i*2
11+
if i > 0 && i < numRows-1 && k < len(s) {
12+
out = append(out, s[k])
13+
}
14+
}
15+
}
16+
return string(out)
17+
}

01xxxx/0007.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
func reverse(x int) int {
2+
m := false
3+
if x < 0 {
4+
m = true
5+
x = -x
6+
}
7+
ds := []int{}
8+
for x > 0 {
9+
ds = append(ds, x%10)
10+
x /= 10
11+
}
12+
o := 0
13+
b := 1
14+
for i := len(ds) - 1; i >= 0; i-- {
15+
o += ds[i] * b
16+
b *= 10
17+
if !m {
18+
if o >= 2147483648 {
19+
return 0
20+
}
21+
} else {
22+
if o > 2147483648 {
23+
return 0
24+
}
25+
}
26+
}
27+
if m {
28+
o = -o
29+
}
30+
return o
31+
}

01xxxx/0008.go

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
func myAtoi(str string) int {
2+
ds := []byte{}
3+
m := false
4+
started := false
5+
for _, c := range []byte(str) {
6+
if c == ' ' {
7+
if started {
8+
break
9+
}
10+
continue
11+
} else if c == '+' || c == '-' {
12+
if !started {
13+
started = true
14+
m = c == '-'
15+
continue
16+
}
17+
break
18+
} else if c < '0' || c > '9' {
19+
break
20+
}
21+
started = true
22+
ds = append(ds, c)
23+
}
24+
25+
dst := []byte{}
26+
started = false
27+
for _, c := range ds {
28+
if c == '0' && !started {
29+
continue
30+
}
31+
started = true
32+
dst = append(dst, c)
33+
}
34+
ds = dst
35+
if len(ds) > 11 {
36+
if !m {
37+
return 2147483647
38+
} else {
39+
return -2147483648
40+
}
41+
}
42+
43+
var o, b uint64 = 0, 1
44+
for i := len(ds) - 1; i >= 0; i-- {
45+
o += uint64(ds[i]-'0') * b
46+
b *= 10
47+
if !m {
48+
if o >= 2147483648 {
49+
return 2147483647
50+
}
51+
} else {
52+
if o > 2147483648 {
53+
return -2147483648
54+
}
55+
}
56+
}
57+
i := int(o)
58+
if m {
59+
i = -i
60+
}
61+
return i
62+
}
File renamed without changes.
File renamed without changes.

01xxxx/0012.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
func intToRoman(num int) string {
2+
t := []string{"", "M", "MM", "MMM"}
3+
h := []string{"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}
4+
d := []string{"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}
5+
u := []string{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}
6+
return t[num/1000] + h[(num%1000)/100] + d[(num%100)/10] + u[num%10]
7+
}

0 commit comments

Comments
 (0)