New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[js] 第30天 写一个方法判断字符串是否为回文字符串 #108
Comments
https://leetcode-cn.com/problems/valid-palindrome/ 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 示例 1: 输入: "A man, a plan, a canal: Panama" 输入: "race a car" 大概步骤:
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
if (s.length === 1) return true
const str = s.replace(/[^a-zA-Z0-9]/g, "").toLowerCase()
const strReverse = str.split('').reverse().join('')
return str === strReverse
}; |
function cheackstr(str){ |
function cheackstr(str){
var reversestr=str.split("").reverse().join("");
if(str===reversestr){
alert("我是回文字符串");
}else{
alert("我不是回文字符串")
}
} |
const isPalindrome = (str) =>
str ===
str
.split("")
.reverse()
.join("");
console.log(isPalindrome("abc"));
console.log(isPalindrome("abcdcba"));
console.log(isPalindrome("abccba"));
console.log(isPalindrome("abccbaabc")); |
|
function isPalindrome(str) {
let lp = 0,
rp = str.length - 1;
while (lp <= rp) {
if (str[lp++] != str[rp--]) return false;
}
return true;
} |
双指针从头尾往中间遍历,这个效率比前面的回答高多了 |
没有考虑无效字符以及大小写,不过双指针还是高效。 |
const fn = (str) => {
str = str.replace(/(\W+)|(\_+)/g, '');
let newStr = str.split('').reverse().join('');
if (str === newStr) {
return true;
}
return false;
} |
const check = s => { console.log(check('aba')); |
|
把上边各位的答案做了一下总结
这个题的关键点在于判断字符串(长度为
方法一使用for循环进行遍历 /**
* @description: 判断字符串是否是回文字符串
* @param {string} str
* @return {boolean}
*/
function isPalindrome(str) {
if (str.length === 1) return true;
str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
for (let i = 0; i < str.length; i++) {
if (str[i] != str[str.length - 1 - i]) {
return false;
}
}
return true;
} 方法二通过数组反转字符,然后再和原字符串进行比较 /**
* @description: 判断字符串是否是回文字符串
* @param {string} str
* @return {boolean}
*/
function isPalindrome(str) {
if (str.length === 1) return true;
str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
const strReverse = str.split('').reverse().join('');
return str == strReverse;
} 方法三双指针遍历,从两边向中间进行遍历。其实和第一种方法中的for循环中if语句的判断条件类似 function isPalindrome(str) {
if (str.length === 1) return true;
str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
let lp = 0,
rp = str.length - 1;
while (lp <= rp) {
// 这里lp再进行str[lp]运算,然后再自增
if (str[lp++] != str[rp--]) {
return false;
}
}
return true;
} |
|
function cheackstr(str) { |
function isPalindrome(str) {
const rts = str.split('').reverse().join('');
return rts === str;
} |
<script> function is_reverse(str){ let re_str = str.split('').reverse().join(''); return re_str===str } console.log(is_reverse('aba')) </script> |
var str = '锵咚锵'; function isPalindrome(data) { |
// 判断是否为回文字符串
|
let str = 'abcdcba';
isOk = true;
for (let i = 0; i < str.length; i++) {
if (i > str.length / 2) {
break;
}
if (str[i] !== str[str.length - 1 - i]) {
isOk = false;
}
}
console.log(isOk); |
function isPalindrome(str){
is(str.length === 1) return true;
str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
for(let i = 0; i < str.length; i++){
if(str[i] !== str[str.length - 1 - i]){
return fasle;
}
}
return true;
} function isPalindrome(str){
is(str.length === 1) return true;
str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
let newStr = str.split('').reverse().join('');
return str === newStr;
} function isPalindrome(str){
is(str.length === 1) return true;
str = str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
let lp = 0,
rp = str.length -1;
while(lp <= rp){
if(str[lp++] !== str[rp--]){
return false;
}
}
return true;
} |
第30天 写一个方法判断字符串是否为回文字符串
The text was updated successfully, but these errors were encountered: