//記錄今晚為freecodecamp的norepeat找到自己的解法
//norepeat的意思為:找到一串字符串的所有排列組合方式,相鄰的字母不能重復
// "aab" => "aba" 和 "aba"和 雖然這兩個字符串相等,但a在原始字符串中的index是不同的
var str = "abcde"
function permAlone(str) {
var strArr = str.split('')
var result = [];
function permutate(arr, accumlatedStr) {
arr.forEach((letter, index) => {
//如果積攢的字符串不存在,說明是第一次遍歷
//或者如果已經積攢的字符串的最后一個字符 不等于 當前遍歷到的字母
if(!accumlatedStr || accumlatedStr.substr(-1) !== letter) {
//累加字符串
var tempStr = accumlatedStr ? accumlatedStr + letter : letter;
//復制當前數組,保持immutable
var rest = arr.slice();
//把當前字母剔除
rest.splice(index, 1)
//如果剩余字符串的長度大于1,遞歸遍歷
if(rest.length > 1) {
permutate(rest, tempStr)
//等于1的情況
} else {
//如果剩下的這個字母跟累加的字符串的最后一個字母不相等的情況下,把最終的字符串push到結果數組中,結束本次字符串的收集
if(tempStr.substr(-1) !== rest[0]) {
result.push(tempStr + rest[0])
}
}
}
})
}
permutate(strArr)
return result
}
var res = permAlone(str)
console.log(res)
No Repeats Please - freecodecamp
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 這里是新概念英語資源系列~介紹一下本系列內容: 1、滬江網上分享講課視頻(如果有) 2、電子書圖片 3、英音美音m...
- 朕最近又開始調研ionic了,半年沒用發現ionic cli已經升級了,在執行ionic cordova buil...
- 首先出現這個問題是由于官方的repository里面沒有我們需要的rpm包,所以我們可以先試一下換源難呢過不能解決...