JavaScript로 "Anagram"을 감지하는 방법은 무엇입니까?
7719 단어 webdevalgorithmsjavascript
An anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once. [1]
그래서 우리는 두 개의 문자열을 인수로 취하는 함수를 작성해야 하고 함수는 그것들이 아나그램인지 아닌지를 비교할 것입니다.
먼저 함수를 정의하자.
function checkAnagram(stringOne, stringTwo){
}
이제 논리 부분,
주의 깊게 읽으면 아나그램은 단어나 구가 될 수 있습니다. 구라면 공백을 포함하고 공백의 수는 두 문자열에서 다를 수 있지만 여전히 아나그램일 수 있음을 의미합니다. 와 같은,
'Monkey writes'와 '뉴욕 타임즈'
두 문자열 모두 대소문자와 공백 수가 다르지만 여전히 애너그램입니다. 따라서 대소문자를 구분하지 않고 문자열에서 공백이 있으면 제거해야 합니다.
function checkAnagram(stringOne, stringTwo){
let a = stringOne
.split("")
.filter((l) => l !== " ")
.join("")
.toLowerCase();
let b = stringTwo
.split("")
.filter((l) => l !== " ")
.join("")
.toLowerCase();
}
여기서 우리가 한 것은 두 개의 변수를 선언하고 각 문자열을 소문자와 공백이 제거된 버전으로 저장하는 것입니다.
이제 알파벳순으로 정렬하고 두 문자열을 비교해야 합니다. 일치하면 함수는 true를 반환합니다. 그렇지 않으면 거짓입니다.
function checkAnagram(stringOne, stringTwo){
let a = stringOne
.split("")
.filter((l) => l !== " ")
.join("")
.toLowerCase();
let b = stringTwo
.split("")
.filter((l) => l !== " ")
.join("")
.toLowerCase();
return a.split("").sort().join("") === b.split("").sort().join("");
}
마지막 줄은 문자열을 분할하고 알파벳순으로 정렬한 다음 문자를 결합하여 비교 결과를 제공합니다.
이제 이 코드를 리팩토링하여 더 짧게 만들 수 있습니다. 나는 당신이 이해할 수 있도록 긴 버전을 썼습니다.
function checkAnagram(stringOne, stringTwo) {
return (stringOne.toLowerCase().split("").filter((l) => l !== " ").sort().join("") ===
stringTwo.toLowerCase().split("").filter((l) => l !== " ").sort().join(""));
}
여기서는 대소문자를 먼저 변경한 다음 배열로 분할합니다. 공백을 제거합니다. 그런 다음 배열을 사전순으로 정렬한 다음 배열을 문자열에 결합하고 비교 결과를 반환합니다.
더 나은 해결책을 찾으면 알려주세요.
Reference
이 문제에 관하여(JavaScript로 "Anagram"을 감지하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sadiq1029/how-to-detect-an-anagram-with-javascript-5ch9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)