字符串的一些方法(主要这三种就能解决)
似乎字符串的一些算法题都是借助于数组的(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. 验证回文串
参考文章
字符串-回文字符串