golang_算法: leetcode_字符串05-验证回文字符串
2019-03-12 20:15
686 查看
版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/88428171
方法1:
package main import "fmt" //大小写字母算一个,逗号空格和其它特殊字符略过 func isPalindrome(s string) bool { bytearr1 := make([]rune,3) bytearr2 := make([]rune,3) for _, v := range s { if v >= 'A' && v <= 'Z' { v += 'a' - 'A' bytearr1 = append(bytearr1, v) fmt.Printf("添加的byte:%c\n",v) }else if v >= 'a' && v <= 'z' { bytearr1 = append(bytearr1, v) fmt.Printf("添加的byte:%c\n",v) }else if v >= '0' && v <= '9' { bytearr1 = append(bytearr1, v) fmt.Printf("添加的byte:%c\n",v) } } fmt.Println("bytearr1 =",bytearr1) for i := len(s)-1; i >= 0; i-- { if s[i] >= 'A' && s[i] <= 'Z' { bytearr2 = append(bytearr2, rune(s[i] + 'a' - 'A')) fmt.Printf("下标:%d,添加的byte:%c\n",i,s[i]) }else if s[i] >= 'a' && s[i] <= 'z' { bytearr2 = append(bytearr2, rune(s[i])) fmt.Printf("下标:%d,添加的byte:%c\n",i,s[i]) }else if s[i] >= '0' && s[i] <= '9' { bytearr2 = append(bytearr2, rune(s[i])) fmt.Printf("下标:%d,添加的byte:%c\n",i,s[i]) } } fmt.Println("bytearr2 =",bytearr2) if StringSliceEqualBCE(bytearr1,bytearr2) { return true } return false } //判断两个slice是否相等 func StringSliceEqualBCE(a, b []rune) bool { if len(a) != len(b) { return false } if (a == nil) != (b == nil) { return false } b = b[:len(a)] for i, v := range a { if v != b[i] { return false } } return true } func main() { //s := "A man, a plan, a canal: Panama" s := "0P0" fmt.Println(isPalindrome(s)) }
Output:
添加的byte:0 添加的byte:p 添加的byte:0 bytearr1 = [0 0 0 48 112 48] 下标:2,添加的byte:0 下标:1,添加的byte:P 下标:0,添加的byte:0 bytearr2 = [0 0 0 48 112 48] true
其它方法可以利用:
- 正则表达式regexp.MustComplied(’[\w]+’)来筛选("\w"表示字母、数字、下划线)
- strings.ToLower转化为小写字母
func isPalindrome(s string) bool { reg := regexp.MustCompile(`[\w]+`) str := strings.ToLower(strings.Join(reg.FindAllString(s, -1),"")) for i,j:=0,len(str)-1;i<j;i,j = i+1,j-1 { if str[i] != str[j]{ return false } } return true }
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【05-Longest Palindromic Substring(最大回文字符串)】
- 【LeetCode-面试算法经典-Java实现】【05-Longest Palindromic Substring(最大回文字符串)】
- golang_算法: leetcode_字符串09-最长公共前缀
- golang_算法: leetcode_字符串07-实现strStr()
- [LeetCode] Valid Palindrome II 验证回文字符串之二
- LeetCode 680. Valid Palindrome II (验证回文字符串 Ⅱ)
- golang_算法: leetcode_字符串06-字符串转换整数 (atoi)
- leetcode-验证回文字符串
- 【LeetCode-面试算法经典-Java实现】【125-Valid Palindrome(回文字验证)】
- LeetCode 125. Valid Palindorme (验证回文字符串)
- leetcode-中级算法-数组和字符串-最长回文字串
- LeetCode-探索-初级-字符串-验证回文字符串-java
- [LeetCode] 680. Valid Palindrome II 验证回文字符串 II
- 【LeetCode】字符串反转函数的几个算法 Reverse String
- leetcode--中级算法--数组和字符串--递增的三元子序列(JavaScript)
- 算法:求一个字符串中存在的回文字符串的最大前缀
- 数据结构——算法之(005)(判断字符串是否是对称的即(回文字符串))
- 算法学习——寻找字符串中的最长回文子串
- [leetcode]高级算法——数组和字符串
- 验证回文字符串