> 웹 프론트엔드 > JS 튜토리얼 > 코드워즈 - 2대1

코드워즈 - 2대1

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;
}
로그인 후 복사

확실히 성능이 좋지 않습니다. 나는 두 번째 루프를 좋아하지 않습니다. 그리고 그다지 깨끗하지도 않습니다. 언젠가 이 글을 다시 찾아봐야겠습니다.

잘 지내세요. 물을 마셔요???.

이전

위 내용은 코드워즈 - 2대1의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿