No repeat please(196)
- 把一个字符串中的字符重新排列生成新的字符串
- 返回新生成的字符串里没有连续重复字符的字符串个数
连续重复只以单个字符为准
eg.
aab
应该返回2, 因为总共有6种排列(aab
,aab
,aba
,aba
,baa
,baa
),只有aba
,aba
合符标准
分析
首先将该字符串转换成数组
|
|
运用全排列算法,来算出全排列的结果, 现在我们具体来分析如何实现该算法。
eg. abc
应该返回2,因为总共有6种排列(bac
, cba
, acb
, bca
, cba
, abc
)
bac
, cba
都是 abc
的 a
与后面两个字符替换得到的acb
是将 abc
第二个字符和第三个字符交换可得到bca
则是由 bac
的第二个和第三个字符交换得到
同理可知, cab
亦是由 cba
交换而来的
结论:因此可以知道全排列算法即是从第1个数开始,分别与后面的数进行交换的过程,其复杂度为O(n!),用递归算法可以较轻易实现
|
|
其次运用 正则表达式 /(.)\1+/g
来判断诸如aab
之类的字符串
|
|