全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

把一个字符串中的字符重新排列生成新的字符串,返回新生成的字符串里没有连续重复字符的字符串个数.连续重复只以单个字符为准

例如, 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字符串的全排列(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# no  # repeats  # please  # JavaScript数据结构与算法之栈与队列  # JavaScript中数据结构与算法(一):栈  # JavaScript数据结构与算法之栈详解  # js如何找出字符串中的最长回文串  # javascript基础练习之翻转字符串与回文  # javascript判断回文数详解及实现代码  # js实现字符全排列算法的简单方法  # 浅谈js中字符和数组一些基本算法题  # JS使用栈判断给定字符串是否是回文算法示例  # 第一个  # 给大家  # 是从  # 希望能  # 这个时候  # 中了  # 因为它  # 这篇  # 两部分  # 小编  # 大家多多  # 总共有  # 与它  # 只以  # 本例  # 获得了  # 网上  # strong  # ccffcc  # function 


相关文章: 无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  中山网站推广排名,中山信息港登录入口?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Swift中switch语句区间和元组模式匹配  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  建站之星备案是否影响网站上线时间?  宁波自助建站系统如何快速打造专业企业网站?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  如何在云主机快速搭建网站站点?  网站制作说明怎么写,简述网页设计的流程并说明原因?  如何安全更换建站之星模板并保留数据?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  浅谈Javascript中的Label语句  网站制作模板下载什么软件,ppt模板免费下载网站?  建站之星2.7模板:企业网站建设与h5定制设计专题  定制建站模板如何实现SEO优化与智能系统配置?18字教程  宝塔建站后网页无法访问如何解决?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何选择靠谱的建站公司加盟品牌?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  建站之星伪静态规则如何设置?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  学校建站服务器如何选型才能满足性能需求?  如何快速搭建二级域名独立网站?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  如何通过智能用户系统一键生成高效建站方案?  Android自定义listview布局实现上拉加载下拉刷新功能  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  重庆网站制作公司哪家好,重庆中考招生办官方网站?  网站网页制作专业公司,怎样制作自己的网页?  Android滚轮选择时间控件使用详解  如何快速查询网址的建站时间与历史轨迹?  如何在Windows服务器上快速搭建网站?  制作网站外包平台,自动化接单网站有哪些?  jQuery 常见小例汇总  如何通过FTP空间快速搭建安全高效网站?  北京专业网站制作设计师招聘,北京白云观官方网站?  已有域名和空间如何搭建网站?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何用搬瓦工VPS快速搭建个人网站?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  建站DNS解析失败?如何正确配置域名服务器?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何在阿里云部署织梦网站?  网站制作需要会哪些技术,建立一个网站要花费多少?  建站之星安装提示数据库无法连接如何解决?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。