javascript判断字符串是否是回文的算法实现

    var str = "reaaer",
	    len = str.length,
		e=(!!(len%2)),
	    mid = e?Math.floor(len/2):(len/2),
	    prev = str.substring(0,mid),
	    next = e?str.substring(mid+1):str.substring(mid),
	    reg = new RegExp("["+prev+"]","g");
		
	//alert(next.match(reg).length === prev.length);
	alert(next.split("").reverse().join("")===prev);

 你还有更好的算法吗?

 

判断一个字符串是否是**回文字符串(Palindrome)**,即该字符串正着读和反着读都一样,例如 `"madam"`、`"racecar"`。 下面是几种常见的 JavaScript 实现方式: --- ### ✅ 方法一:使用字符串反转 ```js function isPalindrome(str) { // 去除非字母数字字符并转为小写(可选) str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase(); return str === str.split('').reverse().join(''); } // 示例 console.log(isPalindrome("Racecar")); // true console.log(isPalindrome("Hello World")); // false ``` --- ### ✅ 方法二:双指针法(从两端向中间比较) ```js function isPalindrome(str) { // 去除非字母数字字符并转为小写 str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase(); let left = 0; let right = str.length - 1; while (left < right) { if (str[left] !== str[right]) { return false; } left++; right--; } return true; } // 示例 console.log(isPalindrome("A man, a plan, a canal: Panama")); // true console.log(isPalindrome("Was it a car or a cat I saw?")); // true ``` --- ### ✅ 方法三:递归方式(不推荐用于长字符串) ```js function isPalindrome(str) { str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase(); if (str.length <= 1) return true; if (str[0] !== str[str.length - 1]) return false; return isPalindrome(str.slice(1, -1)); } ``` --- ### ✅ 注意事项 - 通常需要**忽略大小写**和**非字母数字字符**。 - 可以根据实际需求决定是否做这些处理。 - 回文判断常用于算法题、密码校验、文本处理等场景。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值