【JavaScript——牛客网算法No.HJ4】字符串分隔(以8个字符为一组,长度不足8的末尾补0)

  • @No.HJ4 字符串分隔

  • @problem description:
    •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
    •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
  • @input description:
    连续输入字符串(输入2次,每个字符串长度小于100)
  • @output description:
    输出到长度为8的新字符串数组

  • 示例

  • @input:
    abc
    123456789
  • @output:
    abc00000
    12345678
    90000000
var str1 = readline();
var str2 = readline();
var result = [];
function func(str){
    if(str.split("").length >=8){
        var arr1 = str.split("");
        var more = arr1.splice(8);
        result.push(arr1.join(""));
        func(more.join(""));
    }else if(str.split("").length != 0){
        var arr = [0,0,0,0,0,0,0,0];
        for(var i=0;i<str.length;i++){
            arr.unshift(str.split("").reverse()[i]);
        };
        arr.length = 8;
        result.push(arr.join(""));
    };
};
func(str1);
func(str2);
for(var j=0;j<result.length;j++){
    console.log(result[j]);
};
算法分析:

核心是func递归函数,接收一个字符串,返回分隔好的总数组。然后遍历输出即可。
func函数中:先判断数组长度:
数组长度大于8:
则把第九个之后的元素分割到新的数组more,more继续执行func函数,前八个元素则加入到result数组中;
数组长度不大于8(还需要判断一下是否为0,不然最后结果会多出一组00000000):
把字符串数组元素倒序遍历添加到[0,0,0,0,0,0,0,0]的开头,最后截掉多余的元素,继续添加到result数组。


Code_Zevin_J —— 2020-08-05 20:15:14

猜你喜欢

转载自blog.csdn.net/JZevin/article/details/107868483