使用JavaScript字符串解決回文數(shù)的方案詳解
前言:
JavaScript中的字符串是一種數(shù)據(jù)類型,用于表示文本數(shù)據(jù)。字符串可以包含任意字符序列,包括字母、數(shù)字、符號和空格。靈活掌握字符串的解決問題思想,巧用字符串解決回文數(shù)。
正文
1.如何將字符串中的一個字符移除掉
思路一:想想字符串中是否自帶一個方法將某一個字符移除?借問搜索引擎,沒有此方法。
思路二:JS中是否有別的數(shù)據(jù)結(jié)構(gòu)能夠移除其中的一個字符,再將字符串轉(zhuǎn)化為為那個數(shù)據(jù)結(jié)構(gòu)。是的,數(shù)組有這個功能,只要將字符串轉(zhuǎn)化為數(shù)組就行。
實現(xiàn)功能:
let str = 'hello world'
console.log(str.split(''));

用split將字符串中的每一個字符都作為一個元素放到數(shù)組中去。緊接著如何移除一個字符 e ?
let str = 'hello world'
console.log(str.split('').splice(1,1));

會發(fā)現(xiàn),這并不能移除 e 而是返回下標1的字符 e 。這里可以自定義一個數(shù)組進行移除。
let str = 'hello world'
let strArr = str.split('')
strArr.splice(1,1)
console.log(strArr);
通過定義一個 strArr 的數(shù)組,在進行下標的移除,此時 strArr 不會在受到影響。

但需要面臨的問題是,這是數(shù)組下的splice方法,如何使數(shù)組轉(zhuǎn)化為字符串?仍是兩種思路
思路一:數(shù)組自帶一個方法住轉(zhuǎn)化為字符串(join)

以橫杠的方式進行字符串的拼接。
思路二:自己手搓一個方法,將數(shù)組中的元素一個一個轉(zhuǎn)化為字符儲存在字符串中。
let str = 'hello world'
function spliceStr (str,index) {
let newStr = ''
for (let i = 0;i < str.length;i++) {
if( i != index)
newStr += str[i]
}
return newStr
}
console.log(spliceStr(str,1));
給出 str 的一個下標,遍歷每一個字符串,將每一個str 的下標加到 newStr 中去,但是為了不讓,每一個都加到 newStr 中,給出一個判斷語句,if( i != index),滿足所有的條件才加到里面去,最后返回結(jié)果。

結(jié)果符合預(yù)期。
2.切割一個字符串(slice)
字符串中存在一個方法自己進行切割其中的字符,slice 。
let str = 'hello world' console.log(str.slice(1,3)); console.log(str);

這里會發(fā)現(xiàn),字符串本身不會受到影響,會將切割的字符移除。并且,這是一個左閉右開的區(qū)間【即包含下標一的字符不包含下標三的?!?/p>
這里就是大概字符串的介紹。
3.如何使用字符串解決回文數(shù)【從右到左和從左到右一樣】
let str = 'ababa'
function isPalindrome(str) {
let arr = str.split('').reverse()
let newStr = arr.join('')
if(str == newStr){
console.log();
return true
}
}
isPalindrome(str)
將字符串轉(zhuǎn)化為數(shù)組 let arr = str.split('').reverse(),然而數(shù)組是復雜數(shù)據(jù)類型,無法進行直接相等比較,在將數(shù)組轉(zhuǎn)化為字符串這種簡單數(shù)據(jù)類型 let newStr = arr.join(''),在將if相等比較,最后返回true。
let str = 'ababa'
function isPalindrome(str) {
let i = 0
let j = length - 1
while(i < j){
if(str[i] === str[j]){
i++
j--
}else {
return false
}
}
}
isPalindrome(str)
這里左右手各拿一個數(shù),依次遍歷比較兩個值是否相等?若不相等,則返回false,否則就是true,就判斷出這是回文數(shù)。

結(jié)果沒有返回false,所以沒問題。
總結(jié)
理解字符串做算法題的思路:1:從自身方法中去找 2:自己手搓一個方法來解決問題。
這兩個思路很重要,再就是從左右兩邊用指針來進行回文數(shù)的比較。
以上就是使用JavaScript字符串解決回文數(shù)的方案詳解的詳細內(nèi)容,更多關(guān)于JavaScript字符串解決回文數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
利用JavaScript實現(xiàn)3D可旋轉(zhuǎn)粒子矩陣效果
dat.gui.js是一個一個輕量級的圖形用戶界面庫,或者說GUI組件,只有幾十KB,可以用于創(chuàng)建操作控制三維場景的菜單欄等。本文將利用dat.gui.min.js實現(xiàn)3D可旋轉(zhuǎn)粒子矩陣效果,感興趣的可以了解一下2022-06-06
JS設(shè)置自定義快捷鍵并實現(xiàn)圖片上下左右移動
這篇文章主要介紹了JS設(shè)置自定義快捷鍵并實現(xiàn)圖片上下左右移動,文中通過使用自定義熱鍵或者使用鍵盤上下左右鍵移動圖片,以此來實現(xiàn)此功能,需要的朋友可以參考下2019-10-10

