说明:都是以题目代号为标题,点击题目编号即可进入LeetCode对应题目
大家可以使用浏览器的全局搜索来搜索题目
win:ctrl +f
win:command+f
·125
package main
import (
"fmt"
"regexp"
"strings"
)
func main() {
s := "race a car"
isPalindrome(s)
fmt.Println(isPalindrome(s))
}
//输入: "A man, a plan, a canal: Panama"
//输出: true
func isPalindrome(s string) bool {
compile := regexp.MustCompile(`[\w]+`)
findString := compile.FindAllString(s, -1)
space := strings.ToUpper(strings.TrimSpace(strings.Join(findString, "")))
return isPalind(space)
}
//AMANAPLANACANALPANAMA
//ABCBA
func isPalind(s string) bool {
split := strings.Split(s, "")
var left, right = 0, len(split)-1
for left <= right {
if split[left] == split[right] {
left++
right--
continue
}
return false
}
return true
}
·290
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(wordPattern("abba","dog cat cat dog"))
}
//输入: pattern = "abba", str = "dog cat cat dog"
//输出: true
func wordPattern(pattern string, str string) bool {
pattMap := make(map[string]int)
patt := strings.Split(pattern, "")
for index, value := range patt {
if slice, ok := pattMap[value]; ok {
pattMap[value] = pattMap[value] + slice
} else {
pattMap[value] = index
}
}
target := strings.Split(str, " ")
targetMap := make(map[string]int)
for index, value := range target {
if slice, ok := targetMap[value]; ok {
targetMap[value] = targetMap[value] + slice
} else {
targetMap[value] = index
}
}
var p, t int
for _, value := range pattMap {
p += value
}
for _, value := range targetMap {
t += value
}
return p == t && len(target) == len(patt)
}
·709
package main
import "fmt"
func main() {
lowerCase := toLowerCase("Hello")
fmt.Println(lowerCase)
}
func toLowerCase(str string) string {
bytes := []byte(str)
for i := 0; i < len(bytes); i++ {
if bytes[i] >= 'A' && bytes[i] <= 'Z' {
bytes[i] = bytes[i] + 'a'- 'A'
}
}
return string(bytes)
}
package main
import (
"fmt"
"strings"
)
func main() {
J := "aA"
S := "aAAbbbb"
stones := numJewelsInStones(J, S)
fmt.Println(stones)
}
//输入: J = "aA", S = "aAAbbbb"
//输出: 3
func numJewelsInStones(J string, S string) (count int) {
j := strings.Split(J, "")
for i := 0; i < len(j); i++ {
count += strings.Count(S, j[i])
}
return count
}
·977
package main
import (
"fmt"
"sort"
)
func main() {
squares := sortedSquares1([]int{-4, -1, 0, 3, 10})
fmt.Println(squares)
}
//输入:[-4,-1,0,3,10]
//输出:[0,1,9,16,100]
func sortedSquares(A []int) []int {
result := make([]int, len(A))
var i, j, count = 0, len(A)-1, len(A)
for i <= j {
count--
if A[i]*A[i] > A[j]*A[j] {
result[count] = A[i] * A[i]
i++
} else {
result[count] = A[j] * A[j]
j--
}
}
return result
}
func sortedSquares1(A []int) []int {
result := make([]int, len(A))
for index, value := range A {
result[index] = value * value
}
sort.Ints(result)
return result
}
·1021
package main
import (
"fmt"
"strings"
)
func main() {
parentheses := removeOuterParentheses("(()())(())(()(()))")
fmt.Println(parentheses == "()()()()(())")
//()()()
}
//提取出括号
func removeOuterParentheses(s string) string {
var left = "("
//获得括号数组
bracket := strings.Split(s, "")
var result string
var l, r int
for i := 0; i < len(bracket); i++ {
if bracket[i] == left {
l++
} else {
r++
}
//如果左边括号和右边括号相等,则为一组完整的括号
if l == r {
var str string
//提取当前索引到起始之前的一个,并将数组转为字符串
for _, value := range bracket[i+2-2*r : i] {
str += value
}
result += str
l, r = 0, 0
}
}
return result
}
package main
func main() {
//fmt.Printf("%v", plusOne([]int{4, 3, 2, 1}))
println(fibonacci(7))
}
//输入: [4,3,2,1]
//输出: [4,3,2,2]
//[9,9,9,9]
func plusOne(digits []int) []int {
len := len(digits) - 1
ints := add(digits, len)
return ints
}
func add(digits []int, index int) []int {
//递归结束条件
if index < 0 {
digits = make([]int, len(digits)+1)
digits[0] = 1
return digits
}
if digits[index] != 9 {
digits[index] = digits[index] + 1
return digits
}
digits[index] = 0
index--
return add(digits, index)
}
说明:这道题我在本地测试是正确的,但是在LeetCode上提交答案有问题