当前位置: 首页 > news >正文

昆明门户网站网络营销与直播电商是干什么的

昆明门户网站,网络营销与直播电商是干什么的,长春建站模板,政府网站构建与维护LCR 018. 验证回文串 验证回文串 给定一个字符串 s ,验证 s 是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的回文串 。 验证回文串 LCR 018. 验证回文串方法一:**筛选 判断…

LCR 018. 验证回文串

验证回文串

给定一个字符串 s ,验证 s 是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
本题中,将空字符串定义为有效的回文串

验证回文串

  • LCR 018. 验证回文串
  • 方法一:**筛选 + 判断**
    • 第一种是使用语言中的字符串翻转 API 得到 sgood 的逆序字符串 sgood_rev,只要这两个字符串相同,那么 sgood 就是回文串。
    • 第二种是使用**双指针**。
  • 方法二:**在原字符串上直接判断**
  • Char.IsLetterOrDigit 方法
  • charAt() 方法
  • toLowerCase() 方法

方法一:筛选 + 判断

最简单的方法是对字符串 s 进行一次遍历,并将其中的字母和数字字符进行保留,放在另一个字符串 sgood 中。这样我们只需要判断 sgood 是否是一个普通的回文串即可。
判断的方法有两种。

第一种是使用语言中的字符串翻转 API 得到 sgood 的逆序字符串 sgood_rev,只要这两个字符串相同,那么 sgood 就是回文串。

class Solution {public boolean isPalindrome(String s) {StringBuffer sgood = new StringBuffer();int length = s.length();for (int i = 0; i < length; i++) {char ch = s.charAt(i);if (Character.isLetterOrDigit(ch)) {sgood.append(Character.toLowerCase(ch));}}StringBuffer sgood_rev = new StringBuffer(sgood).reverse();return sgood.toString().equals(sgood_rev.toString());}
}

第二种是使用双指针

初始时,左右指针分别指向 sgood 的两侧,随后我们不断地将这两个指针相向移动,每次移动一步,并判断这两个指针指向的字符是否相同。当这两个指针相遇时,就说明 sgood 时回文串。

class Solution {public boolean isPalindrome(String s) {StringBuffer sgood = new StringBuffer();int length = s.length();for (int i = 0; i < length; i++) {char ch = s.charAt(i);if (Character.isLetterOrDigit(ch)) {sgood.append(Character.toLowerCase(ch));}}int n = sgood.length();int left = 0, right = n - 1;while (left < right) {if (Character.toLowerCase(sgood.charAt(left)) != Character.toLowerCase(sgood.charAt(right))) {return false;}++left;--right;}return true;}
}

复杂度分析
时间复杂度:O(∣s∣),其中 ∣s∣ 是字符串 s 的长度。
空间复杂度:O(∣s∣)。由于我们需要将所有的字母和数字字符存放在另一个字符串中,在最坏情况下,新的字符串 sgood 与原字符串 s 完全相同,因此需要使用 O(∣s∣) 的空间。

方法二:在原字符串上直接判断

我们可以对方法一中第二种判断回文串的方法进行优化,就可以得到只使用 O(1) 空间的算法。
我们直接在原字符串 s 上使用双指针。在移动任意一个指针时,需要不断地向另一指针的方向移动,直到遇到一个字母或数字字符,或者两指针重合为止。也就是说,我们每次将指针移到下一个字母字符或数字字符,再判断这两个指针指向的字符是否相同。

class Solution {public boolean isPalindrome(String s) {int n = s.length();int left = 0, right = n - 1;while (left < right) {while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {++left;}while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {--right;}if (left < right) {if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) {return false;}++left;--right;}}return true;}
}

复杂度分析
时间复杂度:O(∣s∣),其中 ∣s∣ 是字符串 s 的长度。
空间复杂度:O(1)。

Char.IsLetterOrDigit 方法

定义
指示 Unicode 字符是否属于字母或十进制数字类别。

重载
IsLetterOrDigit(Char)
指示指定的 Unicode 字符是否属于字母或十进制数字类别。

IsLetterOrDigit(String, Int32)
指示指定字符串中位于指定位置处的字符是否属于字母或十进制数字类别。

charAt() 方法

用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

语法
public char charAt(int index)
参数
index – 字符的索引。

返回值
返回指定索引处的字符。

toLowerCase() 方法

toLowerCase() 方法用于将大写字符转换为小写。

http://www.yidumall.com/news/56324.html

相关文章:

  • 数据资源网站如何做seo服务公司
  • 开封市网站建设公司游戏代理推广渠道
  • 怎样用网络挣钱网络推广优化招聘
  • 票务网站开发端口网站建设方案内容
  • 淘宝上做淘宝客的网站百度在线人工客服
  • 集团公司网站 案例广州最新重大新闻
  • 做ppt的软件模板下载网站免费seo教程
  • 做网站小语种翻译多少钱百度客服电话号码
  • 吉林省长春市建设局网站电商网站开发平台
  • 做百度推广的网站网络营销品牌案例
  • 湖南郴州疫情最新数据杭州专业seo公司
  • 锦州网站建设怎样郑州网站优化外包顾问
  • 做电影网站用什么服务器比较好首页关键词排名优化
  • 深圳龙岗企业网站建设网站流量分析的指标有哪些
  • 网站制作项目执行谷歌广告代运营
  • 电脑打不开网页怎么回事网络营销乐云seo
  • 做轻时尚的网站谷歌搜索引擎下载
  • 网站建设方案模板下载内容营销是什么意思
  • 专门做品牌折扣的网站seo策划
  • 福建住房和城乡建设厅网站首页百度关键词优化首选667seo
  • 怎样可以提升自己的网站自己创建一个网站需要多少钱
  • 网站做营销推广济南做seo的公司排名
  • 网站做可以退款吗百度山西授权代理
  • 做网站的意义大不大百度一下就知道手机版
  • 青岛建站行业google官方下载
  • 打名字就说你是什么做的网站seo网站关键词优化软件
  • 英文外贸网站制作信息发布
  • 网站域名申请了该怎么做手机百度如何发布广告
  • 网站开发与数据库百度推广一般要多少钱
  • 免费外链发布长沙seo