给定一个字符串S,任务是计算给定字符串的每个可能长度的不同排列。
注意:字符串不允许重复字符。
Input: S = “abc”
Output: 15
Explanation:
Possible Permutations of every length are:
{“a”, “b”, “c”, “ab”, “bc”, “ac”, “ba”, “ca”, “cb”, “abc”, “acb”, “bac”, “bca”, “cab”, “cba”}
Input: S = “xz”
Output: 4
方法:想法是找到字符串的每个可能长度的组合的计数,它们的总和是不同长度可能的不同排列的总数。因此,对于N个长度的字符串,不同长度的不同排列的总数为:
Total Combinations possible: nP1 + nP2 + nP3 + nP4 + …… + nPn
下面是上述方法的实现:
C++
// C++ implementation of the
// above approach
#include
#include
using namespace std;
// Function to find the factorial
// of a number
int fact(int a)
{
int i, f = 1;
// Loop to find the factorial
// of the given number
for (i = 2; i <= a; i++)
f = f * i;
return f;
}
// Function to find the number
// of permutations possible
// for a given string
int permute(int n, int r)
{
int ans = 0;
ans = (fact(n) / fact(n - r));
return ans;
}
// Function to find the total
// number of combinations possible
int findPermutations(int n)
{
int sum = 0, P;
for (int r = 1; r <= n; r++) {
P = permute(n, r);
sum = sum + P;
}
return sum;
}
// Driver Code
int main()
{
string str = "xz";
int result, n;
n = str.length();
cout << findPermutations(n);
return 0;
}
Java
// Java implementation of the
// above approach
class GFG{
// Function to find the factorial
// of a number
static int fact(int a)
{
int i, f = 1;
// Loop to find the factorial
// of the given number
for(i = 2; i <= a; i++)
f = f * i;
return f;
}
// Function to find the number
// of permutations possible
// for a given String
static int permute(int n, int r)
{
int ans = 0;
ans = (fact(n) / fact(n - r));
return ans;
}
// Function to find the total
// number of combinations possible
static int findPermutations(int n)
{
int sum = 0, P;
for(int r = 1; r <= n; r++)
{
P = permute(n, r);
sum = sum + P;
}
return sum;
}
// Driver Code
public static void main(String[] args)
{
String str = "xz";
int result, n;
n = str.length();
System.out.print(findPermutations(n));
}
}
// This code is contributed by Amit Katiyar
Python3
# Python3 program to implement
# the above approach
# Function to find the factorial
# of a number
def fact(a):
f = 1
# Loop to find the factorial
# of the given number
for i in range(2, a + 1):
f = f * i
return f
# Function to find the number
# of permutations possible
# for a given string
def permute(n, r):
ans = 0
ans = fact(n) // fact(n - r)
return ans
# Function to find the total
# number of combinations possible
def findPermutations(n):
sum = 0
for r in range(1, n + 1):
P = permute(n, r)
sum = sum + P
return sum
# Driver Code
str = "xz"
n = len(str)
# Function call
print(findPermutations(n))
# This code is contributed by Shivam Singh
C#
// C# implementation of the
// above approach
using System;
class GFG{
// Function to find the factorial
// of a number
static int fact(int a)
{
int i, f = 1;
// Loop to find the factorial
// of the given number
for(i = 2; i <= a; i++)
f = f * i;
return f;
}
// Function to find the number
// of permutations possible
// for a given String
static int permute(int n, int r)
{
int ans = 0;
ans = (fact(n) / fact(n - r));
return ans;
}
// Function to find the total
// number of combinations possible
static int findPermutations(int n)
{
int sum = 0, P;
for(int r = 1; r <= n; r++)
{
P = permute(n, r);
sum = sum + P;
}
return sum;
}
// Driver Code
public static void Main(String[] args)
{
String str = "xz";
int n;
n = str.Length;
Console.Write(findPermutations(n));
}
}
// This code is contributed by amal kumar choubey
Javascript
输出:
4