JavaScript中简单的算法:空心梯形,空心菱形,回形

2016-09-12  本文已影响0人  小宇大神

1.空心菱形

    /*
    * 空心菱形
    * @param Number n 输入的行数
    * @return String`
    * */
            function ling(n){
                if(n==1) return 1;
                var string = '';
                var kong = '';
                var s='';
                var ko='';
                for(var i=1;i<=n;i++){
                    for(var k=n-1;k>=i;k--){
                        kong+=' ';
                    }
                    for(var j=1;j<=2*i-1;j++){
                        if(j==1 || j==2*i-1){
                            string+='*';
                        } else {
                            string+=' ';
                        }
                    }
                    console.log(kong+string);
                    string='';
                    kong = '';
                }
                for(var a=n-1;a>=1;a--){
                    for(var b=n-1;b>=a;b--){
                        ko+=' ';
                    } 
                   for(var c=1;c<=2*a-1;c++){
                        if(c==1 || c==2*a-1){
                            s+='*';
                        } else {
                            s+=' ';
                        }
              }
            console.log(ko+s);
            ko="";
            s="";
        }
    }
    ling(4);

2.空心梯形

    /*
    * 空心梯形
    * n:表示梯形第一行显示的星星的个数,如果n是偶数,则星星的个数会剪掉1
    * */
        function tiXing(n,m){
            var string='';
        //通过第一行星星的个数计算星星从第几行开始显示
        n = Math.floor((n+1)/2);
        for(var i=1;i<=m;i++){
            if(i>=n){
                for(var j=1;j<=2*i-1;j++){
                    if(i==n || i==m){
                        string+='* ';
                    } else {
                        if(j==1 || j==2*i-1){
                            string+='* ';
                        } else {
                            string+='  ';
                        }
                    }
                }
                console.log(string); 
               string='';
            }
        }
    }
    tiXing(6,10);

3.回形

    /*
    * 回形
    * @param n int 外层的行数或列数
    * @param m int 内层的行数或列数
    * */
    function hui(n,m){
        var s = '';    
        var tmp=0;
        //判断下,如果用户给的内部或外部的列数不满足条件的时候,给一个默认值
        if(Math.floor(n/2)<=4){
            n=8;    }
        if(m>=(Math.floor(n/2)-2)){
            m=2;
        }
        var num = (n-m*2);
        //循环
        for(var i= 1;i<=n;i++){
            for(var j=1;j<=n;j++){
                if(i==1 || i==n){
                    s+='* ';
                } else if(i==m+1 || i==(n-m)){
                    if(j==1 || j==n || (j>=(m+1)&& j<=(n-m))){
                        s+='* ';
                    } else{
                        s+='  ';
                    } 
               }else if((i>1 && i<m+1) || i>=(n-m)&& i<n) {
                    if(j==1 || j==n){
                        s+='* ';
                    } else{
                        s+='  ';
                    }
                } else {
                    if(j==1 || j==n){
                        s+='* ';
                    } else if(j==m+1 || j==(n-m)){
                        s+='* ';
                    }else{
                        s+='  ';
                    }
                }
            }
            console.log(s);
            s='';
        }
    }
    hui(10,3);

4.分割字符

    /*
    * 从前往后分隔字符串
    * @param str string 要分隔的字符串
    * */
    //从前往后的每三个字符加一个逗号
    function fen(str){
        //统计字符串的长度
        var len = str.length;
        var newStr='';
        for(var i=0;i<len;i++){
            if((i)%3==0){
                newStr+=",";
            }
            newStr+=str[i];
        }
        newStr = newStr.slice(1);
        console.log(newStr);
    }
    fen('1234567732213211');
    console.log('++++++++++++++++++++++++++++++++++++++++++++');
    /*
     * 从后往前分隔字符串 
    * @param str string 要分隔的字符串
     * */
    //从后往前的每三个字符加一个逗号
    function fens(str){
        //统计字符串的长度
        var len = str.length;
        var newStr='';
        var strs='';
        var result='';
        for(var i=len-1;i>=0;i--){
            newStr+=str[i];
        }
        for(var i=0;i<len;i++){
            if((i)%3==0){
                strs+=",";
            }
              strs+=newStr[i];
        }
        strs = strs.slice(1);
        var num = strs.length;
        for(var i=num-1;i>=0;i--){
            result+=strs[i];
        }
        console.log(result);
    }
    fens('1234567732213211');
上一篇 下一篇

猜你喜欢

热点阅读