问候。
我在本系列中发布了 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中文网其他相关文章!