golang刷leetcode

从简单开始刷,希望能坚持吧

  • 回文数第九题
//回文数第九题
func isPalindrome(x int) bool {
	if x<0{
		return false
	}else if x>=0&&x<10{
		return true
	}else{
		stra:=strconv.Itoa(x)
		for i:=0;i<len(stra)/2;i++{
			if stra[i]!=stra[len(stra)-1-i]{
				return false
			}
		}
		return true
	}
}
  • 整数反转第7题,值得学习的是平方运算
func reverse(x int) int {
	judge:=false
	if x<0{
		x=-x
		judge=true
	}
	stra:=strconv.Itoa(x)
	revse:= func(a string)int {
		strrevse:=""
		for i:=0;i<len(a);i++{
			strrevse+=string(a[len(a)-1-i])
		}
		inta,_:=strconv.Atoi(strrevse)
		return inta
	}(stra)
	if judge{
		revse=-revse
	}
	if revse < math.MinInt32 || revse > math.MaxInt32 {//todo 学习平方运算
		return 0
	}
	return revse
}
func reverse_NB(x int) int {
	y := 0
	for x!=0 {
		y = y*10 + x%10//精华,爆赞
		if !( -(1<<31) <= y && y <= (1<<31)-1) {
			return 0
		}
		x /= 10
	}
	return y
}

  • 13罗马数字转整数
func romanToInt(s string) int {
	name:=map[string]int{
		"I":1,
		"V":5,
		"X":10,
		"L":50,
		"C":100,
		"D":500,
		"M":1000}
	counter:=1
	all:=0
	roman:=s
	for i:=0;i<len(roman);i++{
		if i+1==len(roman){
			all+= counter*name[string(roman[i])]
			break
		}
		if roman[i]==roman[i+1]{
			counter++
		}else if name[string(roman[i])]<name[string(roman[i+1])]{
			all+=name[string(roman[i+1])]-counter*name[string(roman[i])]
			i+=1
			counter=1
		}else{
			all+= counter*name[string(roman[i])]

			counter=1
		}
	}
	return all
}
  • 最长公共前缀14//值得注意的是对于特殊情况的判断,需要多锻炼
func longestCommonPrefix(strs []string) string {
	if len(strs)==0{
		return ""
	}
	if len(strs)==1{
		return strs[0]
	}
	same:=""
	samestr:=""
	min:=strs[0]
	for _,str:=range strs{
		if len(min)>len(str){
			min=str
		}
	}
	for index,ch:=range min{
		same+=string(ch)
		for _,str:=range strs{
			strjudge:=""
			for i:=0;i<=index;i++{
				strjudge+=string(str[i])
			}
			if strjudge!=same{
				return samestr
			}
		}
		samestr+=string(ch)
	}
	return samestr
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值