当前位置:首页 > 日记 > 正文

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

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

相关文章

如何设置让PPT2007自动播放功能

如何设置让PPT2007自动播放功能

动画,自动播放,如何设置,功能,电脑软件,  试试让PPT自动播放,这样可以省去我们的麻烦,而且自动播放的时间间隔可以任由你设定。以下是小编为您带来的关于让PPT2007自动播放动画,希望对您有所帮助。让PPT2007自动播放动画一、所有页面按统一…

基于jQuery实现推拉门动画效果的两

基于jQuery实现推拉门动画效果的两

方法,动画效果,推拉门,两种,电脑软件,''推拉门''动效也可以称作"手风琴"效果,大多数效果实现的思路基本是一样的,下面介绍两种方法,一种是通过改变图片的偏移位置实现移动,另一种是通过遍历背景图片后改变图片的宽度实现变换。实现方法一…

QQ音乐如何列表循环 QQ音乐单曲循

QQ音乐如何列表循环 QQ音乐单曲循

循环,音乐,列表,单曲,电脑软件,QQ音乐是我们经常使用的一款免费的音乐软件。小编也经常用它听歌,更新了版本的QQ音乐很多功能的入口都不同了,下面小编为大家介绍一下qq音乐怎么设置播放方式1、打开qq音乐, 找到自己心爱的歌曲后播放,找到我们点…

IIS7.5 http 1.1 新建应用程序失败

IIS7.5 http 1.1 新建应用程序失败

解决方法,应用程序,电脑软件,http,今天突然服务器接口默认的主机头打开报错,错误信息是:http 1.1 新建应用程序失败,很奇怪,后来经过研究才发现是改动了IIS名字,分享下如何解决的。解决方法很简单: 1.退出IIS重新启动 2.然后点击:应用池程序-Defau…

git提交空目录的方法

git提交空目录的方法

方法,提交,目录,电脑软件,git,前言git和 svn不同,仅仅跟踪文件的变动,不跟踪目录。所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的。只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这…

JavaScript中无法通过div.style.le

JavaScript中无法通过div.style.le

解决方法,获取值,电脑软件,div,JavaScript,一、问题总结: 样式必须直接写在元素内部才能通过div.style.left直接获取属性值(也就是必须是内联样式才行),定义在css中的样式不能通过这种方式获取。 让元素移动到200停止setTimeout ( functio…

受损的dll文件如何修复

受损的dll文件如何修复

文件,受损,电脑软件,dll,电脑使用时间长了,经常会遇到这样一种问题,在你打开某个程序,会弹出一个提示窗口,提示程序中某个dll文件丢失或损坏,无法正常运行。其实这时候我们可以试着去网上下载相同的dll文件,说不定可以解决了,下面是给大家推荐一个…

JS获取数组中出现次数最多及第二多

JS获取数组中出现次数最多及第二多

方法,组中,次数最多,电脑软件,JS,本文实例讲述了JS获取数组中出现次数最多及第二多元素的方法。分享给大家供大家参考,具体如下:整型数组中出现次数最多和第二多的元素用哈希数组function f(arr){ var i; var length=arr.length; var hash…

Excel表格中怎么运用函数求差

Excel表格中怎么运用函数求差

函数,表格,电脑软件,Excel,  在用Excel求差的时候,也是可以使用求和函数的,只需要对函数的参数稍作修改即可。以下是小编为您带来的关于Excel函数求差,希望对您有所帮助。Excel函数求差方法一:使用公式1、选中C2单元格,输入&ldquo;=A2-B2&rdqu…

正则表达式全局匹配模式 | g修饰符

正则表达式全局匹配模式 | g修饰符

匹配模式,修饰符,正则表达式,全局,电脑软件,正则表达式g修饰符:g修饰符用语规定正则表达式执行全局匹配,也就是在找到第一个匹配之后仍然会继续查找。语法结构:构造函数方式:new RegExp("regexp","g")对象直接量方式:/regexp/g浏览器支…

ps怎么设计由文字组成的立方体效果

ps怎么设计由文字组成的立方体效果

文字,立方体,效果图,电脑软件,ps,今天我们就来看看ps制作由文字组成的正方体的教程,主要使用智能对象完成。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、先用矩形工具画出3个一样大的矩形。2、在图…

Win7/8修改本地连接DNS详解图文教

Win7/8修改本地连接DNS详解图文教

本地连接,图文教程,修改,详解,电脑软件,电脑DNS怎么改? 之前我们发表过适于XP的DNS设置教程,由于时间比较早,加上写不太详细,许多用户不知道如何操作,今天为大家提供了Win7/8设置DNS的图文详解教程首先,通过开始菜单中打开控制面板,然后选择&rdqu…