Ciąg znaków z maksymalną liczbą unikalnych znaków
Biorąc pod uwagę tablicę ciągów, zadaniem jest wydrukowanie ciągu za pomocą maksymalna liczba wyjątkowych postaci.
Notatka:
- Ciągi znaków składają się z małych liter.
- Jeśli istnieje wiele ciągów, wydrukuj dowolny z nich.
Przykłady:
Wejście: arr[] = ['abc' 'geeksforgeeks' 'gfg' 'kod']
Wyjście: „Maniacy dla maniaków”
Wyjaśnienie: „abc” ma 3 unikalne znaki „geeksforgeeks” ma 7 unikalnych znaków
„gfg” ma 3 unikalne znaki „code” ma 4 unikalne znaki.Wejście: arr[] = ['witaj' 'świecie' 'programowanie' 'zebra']
Wyjście: 'programowanie'
Wyjaśnienie: „programowanie” ma maksymalnie 8 unikalnych znaków.
Zbliżać się:
Pomysł polega na systematycznym sprawdzaniu każdego ciągu znaków, śledząc, jakie małe litery się w nim pojawiają, za pomocą tablicy logicznej zliczającej te unikalne znaki i śledzącej, który ciąg znaków dał dotychczas największą liczbę.
Podejście krok po kroku:
- Wykonaj iterację po każdym ciągu w kolekcji.
- Dla każdego ciągu użyj tablicy logicznej, aby zaznaczyć, które litery są obecne.
- Policz, ile różnych liter zostało oznaczonych jako obecne.
- Jeśli liczba ta przekracza poprzednie maksimum, zaktualizuj maksimum i zapamiętaj pozycję tego ciągu.
- Zwróć ciąg znaków z największą liczbą znalezionych unikalnych znaków.
// C++ code to find string with maximum // number of unique characters. #include using namespace std ; // Function to find string with // maximum number of unique characters. string maxString ( vector < string > & arr ) { int n = arr . size (); int index = -1 maxCnt = 0 ; for ( int i = 0 ; i < n ; i ++ ) { vector < bool > map ( 26 false ); for ( int j = 0 ; j < arr [ i ]. length (); j ++ ) { map [ arr [ i ][ j ] - 'a' ] = true ; } // Find number of unique char int cnt = 0 ; for ( int j = 0 ; j < 26 ; j ++ ) { if ( map [ j ] == true ) cnt ++ ; } // If unique count is greater if ( cnt > maxCnt ) { maxCnt = cnt ; index = i ; } } return arr [ index ]; } int main () { vector < string > arr = { 'abc' 'geeksforgeeks' 'gfg' 'code' }; cout < < maxString ( arr ); return 0 ; }
Java // Java code to find string with maximum // number of unique characters. import java.util.* ; class GfG { // Function to find string with // maximum number of unique characters. static String maxString ( String [] arr ) { int n = arr . length ; int index = - 1 maxCnt = 0 ; for ( int i = 0 ; i < n ; i ++ ) { boolean [] map = new boolean [ 26 ] ; for ( int j = 0 ; j < arr [ i ] . length (); j ++ ) { map [ arr [ i ] . charAt ( j ) - 'a' ] = true ; } // Find number of unique char int cnt = 0 ; for ( int j = 0 ; j < 26 ; j ++ ) { if ( map [ j ] == true ) cnt ++ ; } // If unique count is greater if ( cnt > maxCnt ) { maxCnt = cnt ; index = i ; } } return arr [ index ] ; } public static void main ( String [] args ) { String [] arr = { 'abc' 'geeksforgeeks' 'gfg' 'code' }; System . out . println ( maxString ( arr )); } }
Python # Python code to find string with maximum # number of unique characters. # Function to find string with # maximum number of unique characters. def maxString ( arr ): n = len ( arr ) index = - 1 maxCnt = 0 for i in range ( n ): map = [ False ] * 26 for j in range ( len ( arr [ i ])): map [ ord ( arr [ i ][ j ]) - ord ( 'a' )] = True # Find number of unique char cnt = sum ( 1 for j in range ( 26 ) if map [ j ]) # If unique count is greater if cnt > maxCnt : maxCnt = cnt index = i return arr [ index ] if __name__ == '__main__' : arr = [ 'abc' 'geeksforgeeks' 'gfg' 'code' ] print ( maxString ( arr ))
C# // C# code to find string with maximum // number of unique characters. using System ; class GfG { // Function to find string with // maximum number of unique characters. static string maxString ( string [] arr ) { int n = arr . Length ; int index = - 1 maxCnt = 0 ; for ( int i = 0 ; i < n ; i ++ ) { bool [] map = new bool [ 26 ]; for ( int j = 0 ; j < arr [ i ]. Length ; j ++ ) { map [ arr [ i ][ j ] - 'a' ] = true ; } // Find number of unique char int cnt = 0 ; for ( int j = 0 ; j < 26 ; j ++ ) { if ( map [ j ] == true ) cnt ++ ; } // If unique count is greater if ( cnt > maxCnt ) { maxCnt = cnt ; index = i ; } } return arr [ index ]; } static void Main () { string [] arr = { 'abc' 'geeksforgeeks' 'gfg' 'code' }; Console . WriteLine ( maxString ( arr )); } }
JavaScript // JavaScript code to find string with maximum // number of unique characters. // Function to find string with // maximum number of unique characters. function maxString ( arr ) { let n = arr . length ; let index = - 1 maxCnt = 0 ; for ( let i = 0 ; i < n ; i ++ ) { let map = new Array ( 26 ). fill ( false ); for ( let j = 0 ; j < arr [ i ]. length ; j ++ ) { map [ arr [ i ]. charCodeAt ( j ) - 'a' . charCodeAt ( 0 )] = true ; } // Find number of unique char let cnt = 0 ; for ( let j = 0 ; j < 26 ; j ++ ) { if ( map [ j ] === true ) cnt ++ ; } // If unique count is greater if ( cnt > maxCnt ) { maxCnt = cnt ; index = i ; } } return arr [ index ]; } let arr = [ 'abc' 'geeksforgeeks' 'gfg' 'code' ]; console . log ( maxString ( arr ));
Wyjście
geeksforgeeks
Złożoność czasowa: O(n*m) Gdzie N jest rozmiarem danej tablicy ciągów i M jest największym rozmiarem ciągu występującego w danej tablicy.
Przestrzeń pomocnicza: O(1)