博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[JS]给定字符串,要求重新排列,求没有重复字符串的数目
阅读量:6933 次
发布时间:2019-06-27

本文共 1109 字,大约阅读时间需要 3 分钟。

题目描述:

No repeats please


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

例如, aab 应该返回 2 因为它总共有6中排列 (aab, aab, aba, aba, baa, baa), 但是只有两个 (aba and aba)没有连续重复的字符 (在本例中是 a).

题目来源:FREECODECAMP304


解决问题:
  • 重新排列
  • 删除重复

 

解决方法:

  • 不按照数学排列,直接枚举删去不符合条件的值
  • 枚举采用全排列
  • 正则表达式var re = /(.)\1+/g;

代码:
1 function permAlone(str) { 2   var arr=str.split(""); 3   var result=[]; 4   perm(arr,0,arr.length-1,result);//result存储所有字符串 5   var Test=/(.)\1+/g; 6   result=result.filter(function(val){ return !val.match(Test);});//match函数匹配不符合条件的串 7    8   return result.length; 9   10 }11 function perm(arr,f,l,result)12 {13  14 if(f==l) {
var str=arr.join(""); result.push(str); return result;}15 else{16 for(var i=f;i<=l;++i)17 {18 var temp=arr[f];19 arr[f]=arr[i];20 arr[i]=temp;21 perm(arr,f+1,l,result);//迭代22 temp=arr[f];23 arr[f]=arr[i];24 arr[i]=temp;25 }26 }27 }28 permAlone('aab');

遇到的问题:

将match函数换成test函数,结果将错误,内部的所有测试样例都符合条件,但是在filter函数里都是错误。原因未知。

 相关链接:

正则表达式教程之重复匹配详解

java连续多位相同字符判断的正则表达式

 

转载于:https://www.cnblogs.com/cuphoria/p/9784480.html

你可能感兴趣的文章
使用 nginx 同域名下部署多个 vue 项目,并使用反向代理
查看>>
Python基本数据类型之元组
查看>>
LeetCode-数组-删除有序数组重复元素
查看>>
我所理解的原型&原型链
查看>>
工作三年,我要如何提升Java技术 | 粉丝提问
查看>>
JavaScript 如何使用闭包
查看>>
React 教程:快速上手指南
查看>>
6 个理由,让我不顾一切撑腰 Python!
查看>>
[ 一起学React系列 -- 11 ] React-Router4 (1)
查看>>
在Java中使用redisTemplate操作缓存
查看>>
Generator函数的语法以及异步的应用
查看>>
使用 qrcodejs 生成二维码的几个问题
查看>>
ES6-Promise对象
查看>>
记录一次面试题
查看>>
Flutter Exception降到万分之几的秘密
查看>>
Fiddler抓取数据并分析(完整的配置教程)
查看>>
Keras入门(一)搭建深度神经网络(DNN)解决多分类问题
查看>>
【思维导图-索引篇】搞定数据库索引就是这么简单
查看>>
Kotlin如何避免“!!”(非空断言)
查看>>
我理解的 iOS 与 Android 的区别
查看>>