• w3cshool -- 排列组合去重算法挑战


        function permAlone(str) {
            if(str.length == 1) return str;
            var a = str.substr(0, 1), one = [a], count = 0, toggle = true;
            for(var i = 0; i< str.length-1; i++) {
                var temp = str[i+1]; // 取出需要插入的字母
                one = cha(one, temp)
            }
            // 判断数组是否有连续重复的
            for(var k = 0; k<one.length; k++){ //获取数组中的每一项
                for(var l = 0; l<one[k].length-1; l++){ //遍历每一项的字符串
                    if(one[k][l] == one[k][l+1]) { // 如果存在有连续两个相等的字母
                        // 决策变量,判断是否合格
                        toggle = false;
                        break;
                    } else {
                        toggle = true;
                    }
                }
                // 判断toggle 是否为true
                if(toggle) count++;
            }
            return count;
        }
    
        permAlone('abfdefa');
    
        /*
            插值算法
            str: 需要被插入的数组
            v: 需要插入的字母
         */
        function cha(str, v) {
            var len = str.length; // 获取数组长度
            var arr = [] // 最后需要返回的数组
            for(var i = 0; i<len; i++) {
                for(var j = 0; j<str[i].length+1; j++){ //需要插入的次数等于字符串长度加一
                    var star = str[i].substring(0, j) 
                    var end = str[i].substring(j, str[i].length);
                    var ok = star + v + end;
                    arr.push(ok);
                }
            }
            return arr;
        }
  • 相关阅读:
    Roman to Integer
    Remove Element
    Maximum Subarray
    Climbing Stairs
    Binary Tree Preorder Traversal
    C++引用和指针
    adb
    Traceview
    解析xml
    SDK manager 下载不同版本sdk
  • 原文地址:https://www.cnblogs.com/litings/p/9400312.html
Copyright © 2020-2023  润新知