l********r 发帖数: 140 | 1 Any idea?
Especailly for the case that there are multiple same letters in the string. |
c*****a 发帖数: 808 | 2 use hash to check duplicate? |
l*******b 发帖数: 2586 | 3 用leetcode上next permutation的办法就可以过吧
整数版本的,换成字符就好啦
vector > permute(vector &num) {
sort(num.begin(), num.end());
vector > r;
r.push_back(num);
while(nextPermute(num))
r.push_back(num);
return r;
}
bool nextPermute(vector &num) {
int i,j,n;
i = j = num.size() - 1;
while(i > 0 && num[i] <= num[i-1])
--i;
n = i - 1;
if(n < 0) return false;
else{
while(i < j)
swap(num[i++], num[j--]);
i = n + 1;
while(num[i] <= num[n])
++i;
swap(num[i], num[n]);
return true;
}
} |
p*****2 发帖数: 21240 | 4 复杂度太高吧
【在 l*******b 的大作中提到】 : 用leetcode上next permutation的办法就可以过吧 : 整数版本的,换成字符就好啦 : vector > permute(vector &num) { : sort(num.begin(), num.end()); : vector > r; : r.push_back(num); : while(nextPermute(num)) : r.push_back(num); : return r; : }
|
l*******b 发帖数: 2586 | 5 嗯,我觉得差不太多,n! 和n*n!这个比较
【在 p*****2 的大作中提到】 : 复杂度太高吧
|