使用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 而是返回下標(biāo)1的字符 e 。這里可以自定義一個數(shù)組進(jìn)行移除。
let str = 'hello world'
let strArr = str.split('')
strArr.splice(1,1)
console.log(strArr);
通過定義一個 strArr 的數(shù)組,在進(jìn)行下標(biāo)的移除,此時 strArr 不會在受到影響。

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

以橫杠的方式進(jìn)行字符串的拼接。
思路二:自己手搓一個方法,將數(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 的一個下標(biāo),遍歷每一個字符串,將每一個str 的下標(biāo)加到 newStr 中去,但是為了不讓,每一個都加到 newStr 中,給出一個判斷語句,if( i != index),滿足所有的條件才加到里面去,最后返回結(jié)果。

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

這里會發(fā)現(xiàn),字符串本身不會受到影響,會將切割的字符移除。并且,這是一個左閉右開的區(qū)間【即包含下標(biāo)一的字符不包含下標(biāo)三的?!?/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ù)組是復(fù)雜數(shù)據(jù)類型,無法進(jìn)行直接相等比較,在將數(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:自己手搓一個方法來解決問題。
這兩個思路很重要,再就是從左右兩邊用指針來進(jìn)行回文數(shù)的比較。
以上就是使用JavaScript字符串解決回文數(shù)的方案詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript字符串解決回文數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
用JS實現(xiàn)網(wǎng)頁元素陰影效果的研究總結(jié)
用JS實現(xiàn)網(wǎng)頁元素陰影效果的研究總結(jié)...2007-08-08
解決layui頁面按鈕點擊無反應(yīng),也不報錯的問題
今天小編就為大家分享一篇解決layui頁面按鈕點擊無反應(yīng),也不報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
js取兩個數(shù)組的交集|差集|并集|補(bǔ)集|去重示例代碼
求兩個集合的補(bǔ)集、交集、差集、并集等等在實際應(yīng)用中經(jīng)常會使用到,下面與大家分享下具體的實現(xiàn)代碼,感興趣的朋友可以參考下,希望對大家有所幫助2013-08-08
JavaScript進(jìn)階練習(xí)及簡單實例分析
下面小編就為大家?guī)硪黄狫avaScript進(jìn)階練習(xí)及簡單實例分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06

