분류
javascript
Javascript 30초 Snippet - String : stringPermutations
본문
문자열의 모든 순열을 생성합니다 (중복 포함).
https://github.com/30-seconds/30-seconds-of-code#bytesize
⚠️ 경고 :이 기능의 실행 시간은 각 문자마다 기하급수적으로 증가합니다. 8 ~ 10자를 초과하면 다른 모든 조합을 해결하려고 할 때 브라우저가 중단됩니다.
재귀를 사용하십시오. 주어진 문자열의 각 문자에 대해 나머지 문자에 대한 모든 부분 순열을 만듭니다.
문자를 각 부분 순열과 결합하려면 Array.prototype.map()을 사용하고 모든 배열을 하나의 배열로 결합하려면 Array.prototype.reduce()를 사용하십시오.
기본 사례는 문자열 길이가 2 또는 1입니다.
const stringPermutations = str => { if (str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str]; return str .split('') .reduce( (acc, letter, i) => acc.concat(stringPermutations(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), [] ); };
ex)
stringPermutations('abc'); // ['abc','acb','bac','bca','cab','cba']
- 이전글Javascript 30초 Snippet - String : stripHTMLTags 19.11.25
- 다음글Javascript 30초 Snippet - String : splitLines 19.11.25