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

重庆建设网站首页百度上做推广怎么做

重庆建设网站首页,百度上做推广怎么做,做六级真题的网站,推荐做素菜的网站如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则&#xf…

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。

方法一:筛选反转法

该方法的核心思路是先筛选出字符串中的字母和数字字符,并将大写字母转换为小写字母,然后将筛选后的字符串反转,最后比较原筛选字符串和反转后的字符串是否相同。

function isPalindrome(s: string): boolean {// 筛选出字母和数字字符,并转换为小写let filtered = '';for (let char of s) {if (/[a-zA-Z0-9]/.test(char)) {filtered += char.toLowerCase();}}// 反转筛选后的字符串let reversed = filtered.split('').reverse().join('');return filtered === reversed;
}
复杂度分析
  • 时间复杂度:(O(n)),其中 n 是字符串 s 的长度。首先需要遍历一次字符串 s 进行筛选,时间复杂度为 (O(n));然后对筛选后的字符串进行反转,其长度最多为 n,时间复杂度也为 (O(n))。因此,总的时间复杂度为 (O(n))。
  • 空间复杂度:(O(n)),主要用于存储筛选后的字符串和反转后的字符串,其长度最多为 n。

方法二:双指针法

双指针法使用两个指针分别从字符串的首尾开始向中间移动,在移动过程中跳过非字母数字字符,并比较对应位置的字符是否相同。

function isPalindrome(s: string): boolean {let left = 0;let right = s.length - 1;while (left < right) {// 跳过非字母数字字符while (left < right &&!isAlphanumeric(s[left])) {left++;}while (left < right &&!isAlphanumeric(s[right])) {right--;}// 比较字符,忽略大小写if (left < right && s[left].toLowerCase()!== s[right].toLowerCase()) {return false;}left++;right--;}return true;
}function isAlphanumeric(char: string): boolean {return /[a-zA-Z0-9]/.test(char);
}
复杂度分析
  • 时间复杂度:(O(n)),其中 n 是字符串 s 的长度。两个指针最多遍历字符串一次,因此时间复杂度为 (O(n))。
  • 空间复杂度:(O(1)),只使用了常数级的额外空间,主要用于存储指针。

方法三:递归法

递归法通过不断缩小字符串的范围,递归地判断子字符串是否为回文串。

function isPalindrome(s: string): boolean {return helper(s, 0, s.length - 1);
}function helper(s: string, left: number, right: number): boolean {// 跳过非字母数字字符while (left < right &&!isAlphanumeric(s[left])) {left++;}while (left < right &&!isAlphanumeric(s[right])) {right--;}if (left >= right) {return true;}// 比较字符,忽略大小写if (s[left].toLowerCase()!== s[right].toLowerCase()) {return false;}return helper(s, left + 1, right - 1);
}function isAlphanumeric(char: string): boolean {return /[a-zA-Z0-9]/.test(char);
}
复杂度分析
  • 时间复杂度:(O(n)),其中 n 是字符串 s 的长度。递归过程中,每次递归调用都会将问题规模缩小,最多需要 (n/2) 次递归调用,因此时间复杂度为 (O(n))。
  • 空间复杂度:(O(n)),主要是递归调用栈的空间开销,最坏情况下递归深度为 (n/2),因此空间复杂度为 (O(n))。

测试用例

const testString = "A man, a plan, a canal: Panama";
console.log(isPalindrome(testString)); 
http://www.dtcms.com/wzjs/418852.html

相关文章:

  • 做网站开发的有哪些公司免费的seo优化工具
  • 怎样免费做自己的网站关键词优化公司哪家好
  • 请柬网站开发百度竞价项目
  • wampserver和wordpress宁波seo推广优化哪家强
  • 龙岩装修公司广东网络seo推广公司
  • 网站建设与网页设计论文制作网站需要什么软件
  • 网站开发需要用什么微信推广文案
  • 国外的ui设计思想网站在线观看的seo综合查询
  • Wordpress plan谷歌seo推广招聘
  • 定州做网站无锡网络推广平台
  • 贵阳网站方舟网络最好seo优化的主要任务
  • 动态网站开发技术实训报告百度推广有哪些推广方式
  • 深圳建筑网站建设上海广告公司排名
  • 新疆响应式网站建设网站优化软件
  • 百色住房和城乡建设部网站2022最新时事新闻及点评
  • 成都市建设交通委员会网站百度关键词排名价格
  • 汝州建站公司网络推广公司有多少家
  • cpa网站建设教程sem代运营费用
  • 2021年军事新闻网站如何优化排名软件
  • 商城网站要怎样设计北京seo学校
  • 做报告的网站游戏广告投放平台
  • 医疗器械网上采购平台网站排名优化首页
  • 网站建设应计入哪个会计科目seo网站推广简历
  • 展示型网站源码查网站
  • 手机软件网站怎么自己创建网址
  • 莱芜正规的企业建站公司网站关键词上首页
  • 做网站还挣钱吗企业如何做网站
  • 北京各大网站推广服务公司重庆最新数据消息
  • 怎么查看一个网站是哪家公司做的站长工具ip地址
  • 做B2B网站需要办理什么南宁网站建设网络公司