재미있는 JavaScript 인터뷰 챌린지
5662 단어 codenewbiecareerjavascript
이 시리즈를 작성하면서 제가 가장 좋아하는 부분은 코딩 기술을 레벨업하는 데 열정을 가지고 있는 추진력 있고 흥분된 개발자 커뮤니티로서 여러분 모두를 알게 된 것입니다. 개발자 라이프스타일 콘텐츠와 함께 더 많은 팁과 요령을 원하시면 Instagram @elisabethgross568에서 저를 팔로우하세요. 저는 NYC에서 일하기 좋아하는 커피숍, 코딩하는 동안 가장 좋아하는 재생 목록 및 기타 많은 재미있는 것들에 대해 게시할 것입니다! 나는 당신과 더 이상 참여하기를 기다릴 수 없습니다. 알겠습니다. 잡담은 그만하세요. 지난주 챌린지에 대한 솔루션으로 바로 넘어가겠습니다.
해결책
이 솔루션은 아나그램이 순서는 다르지만 서로 동일한 문자 빈도를 갖는다는 사실을 활용합니다. 객체를 사용하여 각 문자열에 어떤 문자가 있고 얼마나 자주 나타나는지 저장할 수 있습니다. 두 문자열의 문자 빈도가 동일하면 애너그램이 있습니다! 코드에서 다음과 같이 표시됩니다.
function anagram(str1, str2) {
// replace all whitespace characters
const arr1 = str1.toLowerCase().replace(/\s+/g, '').split('')
const arr2 = str2.toLowerCase().replace(/\s+/g, '').split('')
const obj = {}
arr1.forEach(letter => {
if (!obj[letter]) obj[letter] = 0
obj[letter]++
})
arr2.forEach(letter => {
if (!obj[letter]) return false
else obj[letter]--
})
for (var letter in obj) {
if (obj[letter] !== 0) return false
}
return true
}
시간 복잡도
이 솔루션의 시간 복잡도는
O(n)
입니다. 문자 빈도를 추적하는 개체를 빌드하기 위해 각 문자열을 한 번만 통과하면 되기 때문입니다. 종종 객체를 사용하여 알고리즘의 시간 복잡성을 줄이는 좋은 방법으로 무언가를 추적할 수 있습니다. 키와 값을 가져오고 설정하는 데 O(1)
의 시간 복잡도가 있기 때문에 객체를 사용하는 비용이 저렴합니다.이번주 챌린지
당신은 절실히 필요한 평화와 고요함을 위해 도시를 벗어나 숲으로 이사하기로 결정한 프로그래머입니다. 일반적으로 지역 우물에서 물을 가져오지만 물이 말라버린 것 같습니다. 빗물을 모아 여과하기로 결정했지만 수집 장치가 평평하지 않습니다. 각 막대의 너비가 1인 고도 지도를 나타내는 음이 아닌 정수
n
가 주어졌을 때 한 번에 모을 수 있는 비의 양을 결정하는 알고리즘을 작성하십시오.예: 주어진
[0,3,0,1,0,0,0,1,0,2]
return 12이는 다음과 같이 시각화할 수 있습니다.
즐기다!
뉴스레터 📫
우리는 큰 것을 출시할 때마다 작은 기능 공개 스니펫을 보내므로 우리 커뮤니티는 새로운 것을 출시할 때 가장 먼저 알게 됩니다. Give us your email here "첫 번째 정보"목록에 추가하겠습니다 :)
독점 Coderbyte 프로모션
그리고 멋진 Dev.to 커뮤니티에 대한 감사의 의미로 독자들에게 특별 프로모션을 제공하고 싶습니다. this secret checkout page에서 구독 및 일회성 결제 30% 할인을 확인하세요.
Reference
이 문제에 관하여(재미있는 JavaScript 인터뷰 챌린지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/coderbyte/a-fun-javascript-interview-challenge-4mc7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)