JavaScript에서 문자열 반전

Sahil Bhosale 2023년10월12일
  1. JavaScript에서 내장 함수를 사용하여 문자열 반전
  2. JavaScript에서 재귀를 사용하여 문자열 반전
JavaScript에서 문자열 반전

추가 공간을 사용하지 않고 제자리에서 JavaScript의 문자열을 뒤집을 수있는 다양한 방법이 있습니다. 이것의 장점은O(1)공간 복잡도로 프로그램을 작성할 수 있다는 것입니다. 이는 데이터를 저장하기 위해 메모리에 추가 공간이 필요하지 않음을 의미합니다. 우리에게 제공된 동일한 공간, 즉 입력의 크기 만 사용하고 해당 공간 내에서 주어진 문자열을 뒤집습니다.

다음은 JavaScript에서 문자열을 반전 할 수있는 몇 가지 방법입니다.

JavaScript에서 내장 함수를 사용하여 문자열 반전

JavaScript에서 사용할 수있는 내장 함수를 사용하여 문자열을 제자리에서 뒤집는 방법을 살펴 보겠습니다. 이를 달성 할 수있는 3 가지 함수가 있습니다-split(),reverse()join().

다음은 세 가지 기능이 각각 수행하는 작업입니다.

  1. split()은 문자열의 각 문자를 분리하여 배열로 변환합니다.
  2. reverse()는 해당 배열을 가져와 그 안에있는 요소를 뒤집습니다.
  3. join()reverse()함수에 의해 반전 된 문자를 결합합니다.
function reverse(s) {
  return s.split('').reverse().join('');
}

var sss = reverse('adam')
console.log(sss)

출력:

mada

문자열을 반전하려면 먼저 입력 문자열에split()함수를 적용해야합니다. 이 함수는 문자열을 해당 문자열의 모든 문자를 포함하는 객체로 변환합니다. 그런 다음 내장 JavaScript 함수reverse()를 사용하여 문자열을 반전 할 수 있습니다. 이 함수는 문자열과 직접 작동하지 않으므로 먼저split()함수를 사용하여 문자열을 객체로 변환해야합니다.

이제 모든 문자가 역순으로있는 개체가 있습니다. 이 객체를 다시 문자열로 변환하려면join()함수를 사용할 수 있습니다. 이 함수는 문자열에서 각 문자를 가져 와서 결합하여 문자열을 형성합니다.

JavaScript에서 재귀를 사용하여 문자열 반전

문자열을 뒤집는 또 다른 방법은 재귀를 사용하는 것입니다. 여기에서str을 인수로 사용하는reverse()라는 함수를 만들었습니다. 재귀 함수를 작성하는 동안 먼저 기본 조건을 추가했는지 확인해야합니다. 기본 조건을 사용하면 실행 중에 재귀 프로그램을 종료 할 수 있습니다. 프로그램에 기본 조건이 없으면 무한히 실행되므로 원하지 않습니다. 사용자가이 함수에 전달하는 문자열이 비어 있는지 확인해야하는 이유입니다. 비어 있으면 프로그램을 종료합니다. 그렇지 않으면 재귀 호출을 수행합니다.

function reverse(str) {
  if (str === '') {
    return '';
  } else {
    return reverse(str.substr(1)) + str.charAt(0);
  }
}

let reverseStringIs = reverse('adam')
console.log(reverseStringIs)

출력:

mada

else부분에는 한 줄의 코드 만 있습니다. 이 코드 줄을 두 부분으로 나눴다고 생각할 수도 있습니다 (이것은 코드를 이해할 수 있도록 가정을위한 것입니다). 첫 번째 부분은reverse(str.subset(1))이고 두 번째 부분은str.charAt(0)입니다.

첫 번째 부분은 전체adam을 취하고 색인 번호에서 시작하는 하위 집합을 취합니다. 1 즉,d가 첫 번째 위치에 있기 때문에dam입니다. 두 번째 부분은 전체 문자열 즉adam을 가져오고 인덱스 0 즉a에있는 문자를 가져옵니다.

재귀 호출을 수행 한 다음이 하위 문자열을reverse()함수에 전달합니다. 즉, 원래 문자열에서 하위 문자열을 이미 생성 했으므로adam이 아닌dam함수에 전달합니다. 이제else부분을 실행할 때 입력 문자열로dam이 있습니다. 인덱스 1부터 시작하는substr()함수를 사용하여이 문자열의 하위 문자열을 생성합니다. 그리고 부분 문자열은 am이되고, str.charAt(0)은 인덱스 0의 문자, 즉 d를 제공합니다.

이 프로세스는 전체 문자열이 비워 질 때까지 계속됩니다. 이 시점에서 이것이 우리 스택의 모습입니다.

재귀 스택

이것은m, a, d, a와 같이 스택에서 문자가 리턴되는 순서입니다. 문자열이 비워지면 프로그램은 스택에서 요소를 하나씩 팝하기 시작하고 역순으로 최종 문자열 인madam을 출력으로 얻습니다.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn