国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js-FCC算法-No repeats please字符串的全排列(詳解)

2019-11-19 16:40:58
字體:
來源:轉載
供稿:網友

把一個字符串中的字符重新排列生成新的字符串,返回新生成的字符串里沒有連續重復字符的字符串個數.連續重復只以單個字符為準

例如, aab 應該返回 2 因為它總共有6中排列 (aab, aab, aba, aba, baa, baa),但是只有兩個 (aba and aba)沒有連續重復的字符 (在本例中是 a).

從網上資料獲得了一些思路,我的代碼:

function permAlone(str) { var arr=str.split(""); var perarr=[]; var begin=0; //創建正則,如果字符串全重復,則直接return 0 var reg = /(.)/1+/g; if(str.match(reg)!==null&&str.match(reg)[0]===str){  return 0; } //用于交換的函數 function swap(idx1,idx2){   var temp=arr[idx1];   arr[idx1]=arr[idx2];   arr[idx2]=temp; } //如果begin到了最后一個字符,可以將這個字符串加入到全排列數組中了 function permall(arr,begin){  if(begin==arr.length-1){   perarr[perarr.length]=arr.join("");   return;  }  for(var i=0;(i+begin)<arr.length;i++){   swap(begin,begin+i);   permall(arr,begin+1);   swap(begin,begin+i);  } } permall(arr,begin); //返回相鄰不重復的數量 return perarr.filter(function(val) {   return !val.match(reg); }).length;}permAlone('aab');

首先,把第一個字符和其后面的字符一一交換。

接著,固定第一個字符,求后面所有字符的排列。這個時候我們仍把后面的所有字符分成兩部分:后面字符的第一個字符,以及這個字符之后的所有字符。然后把第一個字符逐一和它后面的字符交換。

去重的全排列就是從第一個數字起每個數分別與它后面非重復出現的數字交換。

以上這篇js-FCC算法-No repeats please字符串的全排列(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普兰店市| 靖远县| 平邑县| 弥勒县| 龙井市| 临夏市| 环江| 宣威市| 浙江省| 楚雄市| 阳泉市| 霍山县| 三河市| 东乡族自治县| 昆明市| 兴国县| 潼关县| 萍乡市| 图片| 诸城市| 拜泉县| 商河县| 望江县| 方城县| 仪陇县| 柳州市| 临沂市| 新巴尔虎左旗| 罗城| 湄潭县| 桃江县| 泰来县| 梧州市| 长葛市| 河西区| 定南县| 石狮市| 闸北区| 仪征市| 定兴县| 九龙城区|