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");
  • 相关阅读:
    页面跳转
    vue项目流程
    前端框架发展史
    webpack构建react项目和发布流程
    React工作原理
    React项目中的registerServiceWorker作用?
    学习react总结
    浏览器的渲染:过程与原理
    浮动相关
    块级元素与内嵌元素
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/8258895.html
Copyright © 2011-2022 走看看