码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-08-01 14:21:42      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:ring   字母   return   break   bfd   tar   for   存在   连续   

    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;
    }

 

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

标签:ring   字母   return   break   bfd   tar   for   存在   连续   

原文地址:https://www.cnblogs.com/litings/p/9400312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!