JavaScript에서 문자열 반전
추가 공간을 사용하지 않고 제자리에서 JavaScript의 문자열을 뒤집을 수있는 다양한 방법이 있습니다. 이것의 장점은O(1)
공간 복잡도로 프로그램을 작성할 수 있다는 것입니다. 이는 데이터를 저장하기 위해 메모리에 추가 공간이 필요하지 않음을 의미합니다. 우리에게 제공된 동일한 공간, 즉 입력의 크기 만 사용하고 해당 공간 내에서 주어진 문자열을 뒤집습니다.
다음은 JavaScript에서 문자열을 반전 할 수있는 몇 가지 방법입니다.
JavaScript에서 내장 함수를 사용하여 문자열 반전
JavaScript에서 사용할 수있는 내장 함수를 사용하여 문자열을 제자리에서 뒤집는 방법을 살펴 보겠습니다. 이를 달성 할 수있는 3 가지 함수가 있습니다-split()
,reverse()
및join()
.
다음은 세 가지 기능이 각각 수행하는 작업입니다.
split()
은 문자열의 각 문자를 분리하여 배열로 변환합니다.reverse()
는 해당 배열을 가져와 그 안에있는 요소를 뒤집습니다.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
을 출력으로 얻습니다.