字符串-回文字符串


字符串的一些方法(主要这三种就能解决)

似乎字符串的一些算法题都是借助于数组的(reverse)还有用指针(双指针) 还有(正则)

// 去除异常的字符,先全部转成小写 (先将字符串进行这一步)

1
const str = s.toLocaleLowerCase().replace(/[\W_]/ig, '')

大小写转化

1
2
str.toUpperCase
str.toLocaleLowerCase

反转字符串

一定要记住reverse是Array原型上的方法,不要搞错

1
2
3
function reverseStr(str){
return str.split('').reverse().join('')
}

split(): 方法用于把一个字符串分割成字符串数组。
reverse(): 方法用于颠倒数组中元素的顺序。
join() :方法也就是把数组中的所有元素以字符串的形式输出

1
2
3
4
var str = '112254,33445,56699';
var s=str.split(',');
console.log(s.length);
console.log(s[0]);

判断回文字符串

方法一: 利用Array的reverse方法

1
2
3
functin isHuiwenStr(str) {
return srt.split('').reverse().join('') === str
}

方法二: 回文字符串是对称的

1
2
3
4
5
6
7
8
9
10
11
12
functin isHuiwenStr(str) {
const length = str.length
const midIndex = Math.floor(length / 2)

for(let i = 0; i < midIndex; i++) {
if(str[i] !== str[length - 1 - i]) {
return false
}
}

return true
}

非空字符串删除一个元素,判断能否成为回文字符串

描述:给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。

1
2
3
4
5
6
7
8
9
10
11
function isTransHuiwenStr(str) {
const arr = str.split('')
for(let i = 0; i < str.length; i++) {
const copy = [...arr]
copy.splice(i, 1)
if (copy.reverse().join('') === copy.join('')) {
return true
}
}
return false
}

验证回文串(leetcode-125)

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
解释:”amanaplanacanalpanama” 是回文串

示例 2:
输入: “race a car”
输出: false
解释:”raceacar” 不是回文串

1
2
3
4
5
6
7
8
9
10
11
12
13
var isPalindrome = function (s) {
// 去除异常的字符,先全部转成小写
const str = s.toLocaleLowerCase().replace(/[\W_]/ig, '')
const length = str.length;
const midLength = Math.floor(length / 2)
for (let i = 0; i < midLength; i++) {
if (str[i] !== str[length - i - 1]) {
return false;
}
}
return true;

};

125. 验证回文串

参考文章

字符串-回文字符串