2018/11/22
阿新 • • 發佈:2018-11-22
每天一題js
表示有序整數列表的格式是使用逗號分隔的列表
- 個別整數
- 或者由起始整數表示的整數範圍,用短劃線“ - ”分隔範圍內的結束整數。範圍包括區間中的所有整數,包括兩個端點。除非它跨越至少3個數字,否則它不被視為範圍。例如(“12,13,15-17”)
完成解決方案,使其按遞增順序獲取整數列表,並以範圍格式返回格式正確的字串。
簡單來講其實就是,提供一個從小到大排序的陣列,陣列中出現三個數或者三個數以上連續的部分,用 - 省略,如 11,12,,13 等價於 11-13,不連續的數直接顯示,返回一個字串用逗號分隔每一組數。
function solution(list){// 陣列 把超過三個順序 數間隔只差1的數進行 連線 // 1.判定至少三個數是否連續 1.1 連續在判定接下去的數是否仍然連續 -> 直到不連續停止 // 2.對連續的數 捕捉,把捕捉到的數進行處理 我覺得在搞一個數組比較靠譜 let ret = ''; let begin = 0; let end = 0; list.forEach((i,index,arr)=>{ //如果前一個數等於後一個數 那麼就對計數器累加 若不等,則輸出 字元 if(arr[index]+1 === arr[index+1]){ end++; }else{ //因為計數器從0開始 那麼0-2就是三位 就可以進入這個處理if(end>=2){ //index-end 確定了開始計數的字串位置 ret += arr[index-end] + '-' + arr[index] + ','; end = 0; }else{ ret += (arr.slice(index-end,index+1)).join(',')+","; end = 0; } } }) return ret.slice(0,ret.length-1); }