zoukankan      html  css  js  c++  java
  • 排列组合去重

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

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

    function permAlone(str) {
        var arr = [];
        var ans = 0;
        
        for(var i = 0; i < str.length; i++) {
            arr.push(str[i]);
        }
        
        dfs(0, arr);
        
        function dfs(n, a) {
            for(var i = n; i < a.length; i++) {
                swap(i, n, a);
                if(a[n] == a[n - 1]) {
                    swap(i, n, a);
                    continue;
                }
                
                if(n < a.length - 1) {
                    dfs(n + 1, a);
                }
                else {
                    if(a[n] != a[n - 1]) {
                        ans++;
                    }
                }
                
                swap(i, n, a);
            }
        }
        
        return ans;
    }
    function swap(x, y, a) {
        var t = a[x];
        a[x] = a[y];
        a[y] = t;
    }
    permAlone("abcdef");
  • 相关阅读:
    numpy基本使用2
    python 继承 多态
    动态规划算法题(5题)
    利用栈非递归实现块排
    数据结构
    对Node的优点和缺点提出了自己的看法?
    前后端交互流程,如何进行交互
    Web App、Hybrid App与Native App的设计差异
    什么叫优雅降级和渐进增强?
    常用博客
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/8258895.html
Copyright © 2011-2022 走看看