剑指OfferII018.有效的回文

题目

给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。

本题中,将空字符串定义为有效的 回文串 。

示例 1:输入: s = "A man, a plan, a canal: Panama" 输出: true

解释:"amanaplanacanalpanama" 是回文串

示例 2:输入: s = "race a car" 输出: false

解释:"raceacar" 不是回文串

提示:1 <= s.length <= 2 * 105

字符串 s 由 ASCII 字符组成

注意:本题与主站 125 题相同

解题思路分析

1、双指针;时间复杂度O(n),空间复杂度O(1)

func isPalindrome(s string) bool {
   s = strings.ToLower(s)
   i, j := 0, len(s)-1

   for i < j {
      for i < j && !isChar(s[i]) {
         i++
      }
      for i < j && !isChar(s[j]) {
         j--
      }
      if s[i] != s[j] {
         return false
      }
      i++
      j--
   }
   return true
}

func isChar(c byte) bool {
   if ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') {
      return true
   }
   return false
}

2、双指针;时间复杂度O(n),空间复杂度O(n)

剑指OfferII018.有效的回文

func isPalindrome(s string) bool {
   str := ""
   s = strings.ToLower(s)
   for _, value := range s {
      if (value >= '0' && value <= '9') || (value >= 'a' && value <= 'z') {
         str += string(value)
      }
   }
   if len(str) == 0 {
      return true
   }
   i := 0
   j := len(str) - 1
   for i <= j {
      if str[i] != str[j] {
         return false
      }
      i++
      j--
   }
   return true
}

总结

Easy题目,题目同leetcode 125.验证回文串

展开阅读全文

页面更新:2024-03-14

标签:回文   本题   大小写   示例   字符串   字母   字符   题目   定义   提示   数字   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top