从简单开始刷,希望能坚持吧
- 回文数第九题
//回文数第九题
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
}