stringDemo.js 1.22 KB
Newer Older
Scott Sun's avatar
Scott Sun committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
var cl = require('console');
var _ = require('lodash');
var reg = new RegExp('^[a-zA-Z]+$');

function stringZip(iStr){
    if((typeof iStr == 'string') && iStr != '' && reg.test(iStr)){
        var count = 1; //计数
        var str = '';
        var index = 1; //比较字符的索引

        var nextChar = iStr[0];

        if(iStr.length == index){
            return index+iStr;
        };

        while(index < iStr.length){
            if(iStr[index] != nextChar){
                str += (count + nextChar);
                count = 1;
                nextChar = iStr[index];
            }else{
                count += 1;
            };
            index += 1;
        };
        
        str += (count + nextChar);
        
        return str;
    }else{
        cl.log('不是字符串 或 字符串为空 或 不是纯英文字母');
    };
};

function stringUnzip(iStr){
    var str1 = '';
    for(var i=0; i<iStr.length; i+=2){
        str2 = ''
        var n = _.toNumber(iStr[i]);
        for(var j=0; j<n; j++){
            str1 += iStr[i+1]
        };
        str2 += str1;
    };
    return str1;
};

a = 'aaaaaanbbnnnbbbbbbbbbbsssssss';
cl.log(stringZip(a));

b = '3a5b4c7d9f';
cl.log(stringUnzip(b));

//扩展:效率问题