LeetCode题目go语言版(持续更新中)

说明:都是以题目代号为标题,点击题目编号即可进入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)
}

·771

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
}

66


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上提交答案有问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值