【问题标题】:reshape and rearrange string into specific shape将字符串重新整形并重新排列成特定的形状
【发布时间】:2019-10-13 11:35:03
【问题描述】:

在下面的函数中,我正在尝试将字符串重塑为 W 状,并根据其 totalLevel 以新的排列方式生成新的输出,请检查脚本末尾的测试用例以获得更清晰.我正在使用nodejs,并想出了使用对象的想法。但我不知道在到达totalLevel 后如何获取下一个str[i]。感谢您的帮助!

function shapeOfW (str, totalLevel) {
var obj = {}
var position = 0

    for (var i = 0; i < str.length; i++) {
            obj[position+1] = (str[i])
            position++
                if (posisi == totalLevel) {
                    break
                }

    }

return obj
}

//TEST CASE
console.log (shapeOfW('ABCDEFG', 3))//AEBDFCG

/*
    Input           : ABCDE
    Transformed into:   1| A       E
                        2|   B   D   F
                        3|     C       G

    OUTPUT          : AEBDFCG               
*/

【问题讨论】:

    标签: javascript arrays reshape


    【解决方案1】:

    您可以使用二维数组(数组的数组)而不是对象来更好地表示字母的二维空间定位(使用 x 和 y 坐标)。

    这是一个示例(带有额外的格式化 console.log);

    function shapeOfW(str, totalLevel) {
      var array = [];
      var stepY = 1;
    
      for (var x = 0, y = 0; x < str.length; x += 1, y += stepY) {
        array[y] = array[y] || str.split('').map(() => ".");
        array[y][x] = str[x];
        if (x && x % (totalLevel - 1) === 0) {
          stepY = -stepY;
        }
      }
    
      return array;
    }
    
    function consoleLog(array) {
      const log = array.map(arr => arr.join(' ')).join('\n');
      console.log(log);
    }
    
    function join(array) {
      const log = array.map(arr => arr.filter(i => i !== '.').join('')).join('');
      console.log(log);
    }
    
    //TEST CASE
    consoleLog(shapeOfW('ABCDEFG', 3))
    join(shapeOfW('ABCDEFG', 3))
    
    /*
    Input           : ABCDE
    Transformed into:   1| A       E
                        2|   B   D   F
                        3|     C       G
    
    OUTPUT          : AEBDFCG               
    */

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2019-10-11
      相关资源
      最近更新 更多