当前位置: 首页 > 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/335078.html

相关文章:

  • 做网站防护的网站什么是核心关键词
  • 怎样向网站上传照片宣传方式有哪些
  • 动态网站做优化水果店推广营销方案
  • 怎么申请一个域名网站排名优化方案
  • 军事信息化建设网站免费的b2b平台
  • 遵义网站开发哪家便宜宁德市区哪里好玩
  • 网站做百科西安网页设计
  • 收录网站有哪些百度一下你就知道搜索
  • 帮别人做网站服务器网站如何推广运营
  • 成都网站建设电话咨询谷歌关键词挖掘工具
  • 中学网站建设方案中国经济网人事
  • 1核2g 做网站百度seo关键词排名s
  • 白小姐生肖做特网站广州推动优化防控措施落地
  • 代刷网站搭建教程杭州网站seo外包
  • google提交网站北京网站定制公司
  • 用jsp实现网站开发的流程做网页多少钱一个页面
  • 南宁搜索引擎优化重庆seo网络推广关键词
  • 徐州做网站哪个好怎么自己开发网站
  • 住宅设计网站推荐自媒体推广平台
  • 做网站前台需要什么技能项目营销推广策划
  • 做网站商丘长春百度seo公司
  • 铁道部建设监理协会网站关键词快速上首页排名
  • wordpress文件目录无锡网络优化推广公司
  • 青岛网站建设公司效果软文广告发稿
  • 网站建设公司怎么赚钱百度网盘app下载
  • 长春做高端网站公司百度搜索引擎推广步骤
  • 家装设计网站开发企业网站开发制作
  • 怎么做电子商务网站刷移动关键词优化
  • 做微网站的第三方登录界面百度网盘下载
  • 如何做网站迁移网络营销推广策划案例