在 JavaScript 中將相同字串字元分開


問題

我們需要編寫一個 JavaScript 函式,它接收一個字串(作為第一個引數)和一個數字(比輸入字串的長度小)作為第二個引數。

該函式應重新排列字串 str 的字元並構建一個新字串,使得沒有兩個相似字元間隔小於 num 個字元(換句話說,相似字元應該至少相隔 num 個字元)。

該函式最終應該返回新構建的字串。如果無法實現這種排列,我們的函式應返回一個空字串。

例如,如果輸入函式的內容為 -

const str = 'kkllmm';

輸出應為 -

const output = 'mlmklk';

示例

對應的程式碼為 -

 即時演示

const str = 'kkllmm';
const placeApart = (str = '') => {
   const map = {};
   for(let i=0; i<str.length; i++){
      map[str[i]] = map[str[i]] || 0;
      map[str[i]] ++;
   }
   let keys = Object.keys(map).sort((a,b)=>{
      if(map[a]<map[b])
      return 1;
      return -1;
   });
   let len = str.length%2 ? (Math.floor(str.length/2)+1) : str.length/2;
   if(map[keys[0]] > len){
      return "";
   };
   const res = [];
   let index = 0, max = str.length-1;
   while(keys.length){
      let currKey = keys.shift();
      let count = map[currKey];
      while(count){
         res[index] = currKey;
         index = index+2;
         if(index>max)
            index=1;
            count--;
      }
   }
   return res.join("");
};
console.log(placeApart(str));

輸出

控制檯中的輸出為 -

mlmklk

更新日期: 18-Mar-2021

108 次瀏覽

職業起步

完成課程獲得認證

開始學習
廣告
© . All rights reserved.