LeetCode 코딩 문제 2020/11/21 - Most Common Word
[문제]
Given a paragraph and a list of banned words, return the most frequent word that is not in the list of banned words. It is guaranteed there is at least one word that isn't banned, and that the answer is unique.
Words in the list of banned words are given in lowercase, and free of punctuation. Words in the paragraph are not case sensitive. The answer is in lowercase.
요약
문자열중에 특수기호 제외한 단어중 가장 많이 반복되는 단어를 찾아라.
banned는 제외할 단어.
[풀이]
var mostCommonWord = function(paragraph, banned) {
const sChar = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi
while(sChar.test(paragraph) || paragraph.includes(' ')) {
paragraph = paragraph.replace(sChar, ' ').replace(' ', ' ');
}
const splitArr = paragraph.split(' ').map(str => str.toLowerCase()).filter(str => !banned.includes(str));
const res = splitArr.reduce((obj, str) => {
obj[str] ? obj[str] += 1 : obj[str] = 1
return obj;
}, {});
const valuesArr = Object.values(res);
const maxIdx = valuesArr.indexOf(Math.max(...valuesArr));
return Object.keys(res)[maxIdx];
};
특수문자 정규식을 만들고, 문자열에서 특수문자를 ' '
로 변환.
' '
가 두칸인 경우 한칸으로 만들고 공백을 기준으로 split
한 후 소문자 변환하고 banned
에 포함된 단어들은 제거.
각 단어가 몇 번씩 들어가는지 세고, 그중 가장 많이 들어간 단어를 찾음.
가장 많이 반복된 단어 찾는 방법이 더 간단한게 있을거 같은 느낌인데... 흠...
제일 빠른 사람거 코드 봤는데... 쩝...
/\W/
로 특문 제거 하려는데 ' '
때문에 안되서 고민하다가 저렇게 했는데
/\W+/
이렇게 하는 방법이 있었네...
아직도 배워야 할게 많네요...
Author And Source
이 문제에 관하여(LeetCode 코딩 문제 2020/11/21 - Most Common Word), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@hemtory/LeetCode20201121
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var mostCommonWord = function(paragraph, banned) {
const sChar = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi
while(sChar.test(paragraph) || paragraph.includes(' ')) {
paragraph = paragraph.replace(sChar, ' ').replace(' ', ' ');
}
const splitArr = paragraph.split(' ').map(str => str.toLowerCase()).filter(str => !banned.includes(str));
const res = splitArr.reduce((obj, str) => {
obj[str] ? obj[str] += 1 : obj[str] = 1
return obj;
}, {});
const valuesArr = Object.values(res);
const maxIdx = valuesArr.indexOf(Math.max(...valuesArr));
return Object.keys(res)[maxIdx];
};
특수문자 정규식을 만들고, 문자열에서 특수문자를 ' '
로 변환.
' '
가 두칸인 경우 한칸으로 만들고 공백을 기준으로 split
한 후 소문자 변환하고 banned
에 포함된 단어들은 제거.
각 단어가 몇 번씩 들어가는지 세고, 그중 가장 많이 들어간 단어를 찾음.
가장 많이 반복된 단어 찾는 방법이 더 간단한게 있을거 같은 느낌인데... 흠...
제일 빠른 사람거 코드 봤는데... 쩝...
/\W/
로 특문 제거 하려는데 ' '
때문에 안되서 고민하다가 저렇게 했는데
/\W+/
이렇게 하는 방법이 있었네...
아직도 배워야 할게 많네요...
Author And Source
이 문제에 관하여(LeetCode 코딩 문제 2020/11/21 - Most Common Word), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hemtory/LeetCode20201121저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)