首页 > web前端 > js教程 > 代码战争 - 二对一

代码战争 - 二对一

Barbara Streisand
发布: 2025-01-06 08:50:42
原创
911 人浏览过

问候。

Codewars - Two to One

我在本系列中发布了 Codewars 挑战和我的思考过程。我尽可能使用 JS 和 Node 18。只是为了清楚起见,我正在合理使用它们。

好吧,这多汁。本质上,您必须删除字符串中的重复项,对剩下的内容进行排序,然后连接两个字符串。不完全按照这个顺序。事实上,我以完全相反的方式做到了这一点。我还为一个非常具体的步骤构建了一个实用函数(删除重复项)。


首先,连接两个字符串。简单:

let longest = s1 + s2;
登录后复制

第二,拆分字母:

let array = new Array(s1.length + s2.length);
for (let i = 0 ; i < s1.length + s2.length ; i++ ){
    array[i] = longest[i];
  }
登录后复制

第三,对字母进行排序:

array = array.sort((a, b) => a.localeCompare(b));
// (a, b) => a.localeCompare(b)  THIS IS REDUNDANT, but I leave it as a reminder
登录后复制

四、删除重复项:

function keepFirstLetter(array){
  let arrayFixed = new Array(array.length);
  let counter = 0;
  arrayFixed[0] = array[0];


  for (let i = 0 ; i < array.length ; i++ ){
    if (arrayFixed[counter] != array[i]){
      counter++;
      arrayFixed[counter] = array[i];
    }
  }

  return arrayFixed;
}
登录后复制

五、清理:

array = array.join("");
登录后复制

最后,将拼图的每一块放在一起:

function longest(s1, s2) {
  let array = new Array(s1.length + s2.length);

  let longest = s1 + s2;

  for (let i = 0 ; i < s1.length + s2.length ; i++ ){
    array[i] = longest[i];
  }

  array = array.sort((a, b) => a.localeCompare(b));

  array = keepFirstLetter(array);

  array = array.join("")

  return array;
}

function keepFirstLetter(array){
  let arrayFixed = new Array(array.length);
  let counter = 0;
  arrayFixed[0] = array[0];

  for (let i = 0 ; i < array.length ; i++ ){
    if (arrayFixed[counter] != array[i]){
      counter++;
      arrayFixed[counter] = array[i];
    }
  }

  return arrayFixed;
}
登录后复制

它绝对不是高性能的。我不喜欢第二个循环。而且也不是那么干净。有一天我需要重新审视这个。

祝你一切顺利。喝水???.

上一页

以上是代码战争 - 二对一的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板