- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- 如何利用JavaScript獲取字符串中重復次數最多的字
想要保持自己的技術(shù)活力,最有效的手段就是通過(guò)不斷地輸入來(lái)提供足夠的養分。我們也不必刻意追求高深的或者新鮮的知識點(diǎn),通過(guò)對一個(gè)基礎問(wèn)題的全方位多維度解析,同樣也會(huì )收獲不小。
假設有這么一道題目:請獲取字符串 "bianchengsanmei,xuexiyouqudezhishi,jieshiyouqudepengyou,suzaoyouqudelinghun." 中重復次數最多的字符及其重復次數。
今天我們就來(lái)解一下這道題。
這種題目的解法比較開(kāi)放,實(shí)現手段也可能多種多樣,其中的區別在于代碼的運行性能有高有低(時(shí)間復雜度和空間復雜度不同)。
在這里需要注意的只有一點(diǎn):符合最大次數的字符可能不止一個(gè)。
const testStr = "bianchengsanmei,xuexiyouqudezhishi,jieshiyouqudepengyou,suzaoyouqudelinghun.ii"; // 獲取各個(gè)字符及其重復次數的映射對象 let wordsObj = {}; for (let index = 0; index < testStr.length; index++) { const word = testStr[index]; word in wordsObj ? wordsObj[word]++ : wordsObj[word] = 1; } // 獲取最大的重復次數 let maxNum = 0; for (const word in wordsObj) { const num = wordsObj[word]; if (num >= maxNum) { maxNum = num; } } // 獲取最大重復次數對應的字符,并輸出結果 for (const word in wordsObj) { const num = wordsObj[word]; if (num === maxNum) { console.log(`重復次數最多的字符是:${ word },重復次數為:${ maxNum }`) } } // 出現次數最多的字符是:i,出現次數為:10 // 出現次數最多的字符是:u,出現次數為:10
const testStr = "bianchengsanmei,xuexiyouqudezhishi,jieshiyouqudepengyou,suzaoyouqudelinghun.ii"; // 將字符串轉為數組并排序 const testStrArr = testStr.split("").sort(); let startIndex = 0; let endIndex = 1; let maxNum = 0; let validWords = []; // 使用指針?lè )?,獲取最大重復次數及最大次數對應的字符數組 while (startIndex < testStrArr.length) { // startIndex 和 endIndex 位置的字符不同 if (testStrArr[startIndex] !== testStrArr[endIndex]) { // 計算 startIndex 和 endIndex 之間的字符個(gè)數 const rangeNum = endIndex - startIndex; if (rangeNum > maxNum) { maxNum = rangeNum; // 如果出現了新的最大次數,則給存放符合條件字符的數組重新賦值 validWords = [testStrArr[startIndex]]; } else if (rangeNum === maxNum) { // 如果新的次數和最大次數相等,則將該字符 push 進(jìn)字符數組 validWords.push(testStrArr[startIndex]); } startIndex = endIndex; } endIndex++; } // 打印結果 for (let index = 0; index < validWords.length; index++) { const word = validWords[index]; console.log(`重復次數最多的是:${ word },重復次數為:${ maxNum }`) }
本方法的難點(diǎn)和精髓在于使用了指針?lè )?,一次循環(huán)就獲取到了我們想要的結果。
主流的解題思路大概就這兩種,其他的很多解法都可以看作是這兩種思路的變種。
萬(wàn)變不離其宗,只要將解題思路理清了,代碼實(shí)現只是一個(gè)結果而已。在平常的工作學(xué)習中,我們要有意識地培養自己的發(fā)散性思維,從多角度去看待問(wèn)題,你可能會(huì )發(fā)現不一樣的風(fēng)景哦!
到此這篇關(guān)于如何利用JavaScript獲取字符串中重復次數最多的字符的文章就介紹到這了,更多相關(guān)JS獲取重復次數最多字符內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站