# 分割字符串的方法，使每个分区以不同的字符开始

2021年4月2日09:35:08 发表评论 554 次浏览

## 本文概述

``````Input : s = "abb"
Output : 2
"abb" can be maximum split into 2
partitions {a, bb} with distinct
starting character, so k = 2. And, number of ways to split "abb" into
2 partition with distinct starting
character is 2 that are {a, bb} and
{ab, b}.

Input : s = "acbbcc"
Output : 6``````

## C ++

``````// CPP Program to find number of way
// to split string such that each partition
// starts with distinct character with
// maximum number of partitions.
#include <bits/stdc++.h>

using namespace std;

// Returns the number of we can split
// the string
int countWays(string s)
{
int count[26] = { 0 };

// Finding the frequency of each
// character.
for ( char x : s)
count[x - 'a' ]++;

// making frequency of first character
// of string equal to 1.
count展开 - 'a' ] = 1;

// Finding the product of frequency
// of occurrence of each character.
int ans = 1;
for ( int i = 0; i < 26; ++i)
if (count[i] != 0)
ans *= count[i];

return ans;
}

// Driven Program
int main()
{
string s = "acbbcc" ;
cout << countWays(s) << endl;
return 0;
}``````

## Java

``````// Java Program to find number
// of way to split string such
// that each partition starts
// with distinct character with
// maximum number of partitions.
import java.util.*;
import java.lang.*;
import java.io.*;

class GFG
{

// Returns the number of we
// can split the string
static int countWays(String s)
{
int count[] = new int [ 26 ];

// Finding the frequency of
// each character.
for ( int i = 0 ; i < s.length(); i++)
count展开++;

// making frequency of first
// character of string equal to 1.
count展开 = 1 ;

// Finding the product of frequency
// of occurrence of each character.
int ans = 1 ;
for ( int i = 0 ; i < 26 ; ++i)
if (count[i] != 0 )
ans *= count[i];

return ans;
}

// Driver Code
public static void main(String ags[])
{
String s = "acbbcc" ;
System.out.println(countWays(s));
}
}

// This code is contributed

## Python3

``````# Python3 Program to find number of way
# to split string such that each partition
# starts with distinct character with
# maximum number of partitions.

# Returns the number of we can split
# the string
def countWays(s):
count = [ 0 ] * 26 ;

# Finding the frequency of each
# character.
for x in s:
count[ ord (x) -
ord ( 'a' )] = (count[ ord (x) -
ord ( 'a' )]) + 1 ;

# making frequency of first character
# of string equal to 1.
count[ ord (s[ 0 ]) - ord ( 'a' )] = 1 ;

# Finding the product of frequency
# of occurrence of each character.
ans = 1 ;
for i in range ( 26 ):
if (count[i] ! = 0 ):
ans * = count[i];

return ans;

# Driver Code
if __name__ = = '__main__' :
s = "acbbcc" ;
print (countWays(s));

# This code is contributed by Rajput-Ji``````

## C#

``````// C# Program to find number
// of way to split string such
// that each partition starts
// with distinct character with
// maximum number of partitions.

using System;

class GFG
{

// Returns the number of we
// can split the string
static int countWays( string s)
{
int [] count = new int [26];

// Finding the frequency of
// each character.
for ( int i = 0; i < s.Length; i++)
count展开 - 'a' ]++;

// making frequency of first
// character of string equal to 1.
count展开 - 'a' ] = 1;

// Finding the product of frequency
// of occurrence of each character.
int ans = 1;
for ( int i = 0; i < 26; ++i)
if (count[i] != 0)
ans *= count[i];

return ans;
}

// Driver Code
public static void Main()
{
string s = "acbbcc" ;
Console.WriteLine(countWays(s));
}
}``````

``6``