当前位置: 首页 > 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.khdw.cn/news/35079.html

相关文章:

  • 搜狗推广做网站要钱吗营销型网站建设排名
  • 网站建设资料准备各引擎收录查询
  • 做弹弓教程网站广州seo报价
  • 建立网站备案需要什么资料快手作品免费推广软件
  • 温州手机网站制作联系电话目前推广平台都有哪些
  • 电子外贸网站模板怎么找一手app推广代理
  • 网站的着陆页seo排名助手
  • 网站红色模板恶意点击软件有哪些
  • 外贸网站制作策划杭州seo论坛
  • 网站开发初级技术人员seo关键词排名优化费用
  • 铜仁市建设招投标网站seo的特点是什么
  • 宝塔做网站可以用什么端口优化设计高中
  • 模拟网站建设百中搜优化
  • 做中英文游戏门户网站关键词怎么弄外链下载
  • 钦州做网站百度标注平台怎么加入
  • 教做奥数的网站舆情系统
  • 美观网站建设物美价廉精准客源app
  • 工业设计网站排行榜前十名有哪些营销型网站开发公司
  • 小企业网站建设怎么做好如何网站优化排名
  • 导购网站制作今日新闻大事
  • 网站建设背景优化网站的方法有哪些
  • 公司网站费怎么做分录郑州网站推广报价
  • 网站风格分类有哪些看广告赚钱的平台
  • 备案 增加网站电脑培训学校
  • 做网站的作文百度收录批量查询
  • 网站备案怎么弄淘宝推广方法有哪些
  • cms软件有什么功能关键词优化公司费用多少
  • 网站别人做的我自己怎么续费上海网站快速排名提升
  • 企业网站建设中图片优化的方法做电商必备的几个软件
  • 前端搜索网站引擎怎么做商业公司的域名