タイトル説明
説明タイトルの
入力は、文字列内のすべての文字を印刷するための文字列を辞書式順序で配置されています。例えば、入力文字列abcの場合は、ABCのすべての文字列、B、Cが出て配置することができ、ACB、BAC、BCA、CABおよびCBAを印刷します。
入力説明:
9(おそらく繰り返し文字)以下での文字列を入力し、文字は小文字のみが含まれます。
考え
バックトラックの考え方に基づいて、
JSコード
function Permutation(str)
{
// write code here
if (str === '') return []
let arr = str.split('')
let res = []
Help(arr, 0)
return res.sort()
function Help(arr, i) {
if (i === arr.length-1) {
if (!res.includes(arr.join(''))) {
res.push(arr.join(''))
return
}
}
for(let j = i; j < arr.length; j++) {
swap(arr, i, j)
Help(arr, i+1)
swap(arr, i, j)
}
}
function swap (arr, i, j) {
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}