Strängklassen har ingen metod som direkt sorterar en sträng, men vi kan sortera en sträng genom att tillämpa andra metoder efter varandra. Strängen är en sekvens av tecken. I java är objekt av String oföränderliga vilket innebär en konstant och kan inte ändras när de väl har skapats.
Skapa en sträng
Det finns två sätt att skapa en sträng i Java:
- Sträng bokstavlig
String s = techcodeview.com;>
- Använder sig av ny nyckelord
String s = new String (techcodeview.com);>
Notera: Som vi vet att String är oföränderlig i java, därför måste vi i tredje steget skapa en ny sträng.
Metoder:
Det finns två metoder med vilka vi kan sortera valfri sträng i java alfabetiskt
java-kodning if else-sats
- Utan att använda sort()-metoden
- Genom att använda sort() metod
Illustration:
Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>
Låt oss nu diskutera metoder och implementera detsamma.
Metod 1: Utan att använda sort()-metoden
Här kommer vi att lägga ett tillvägagångssätt för att sortera en sträng utan att använda någon fördefinierad logik. Så det blir också ett viktigt tillvägagångssätt från en intervjusynpunkt.
radera senaste commit git
Procedur:
- Konvertera sträng till en array med hjälp av metoden toCharArray() i klassen String
- Använd nu kapslade loopar för att leta efter byte av element i en array.
- Skriv ut dessa teckenmatriselement.
Exempel
Java // Java program for Sorting a String without using any inbuilt sorting functions import java.io.*; class StringSort { //The Merge Function, handling the core compare & copy logic void merge(char arr[], int l, int m, int r) { int n1 = m - l + 1; int n2 = r - m; char L[] = new char[n1]; char R[] = new char[n2]; //Logic for backing up to temp arrays for (int i = 0; i < n1; ++i) L[i] = arr[l + i]; for (int j = 0; j < n2; ++j) R[j] = arr[m + 1 + j]; int i = 0, j = 0; int k = l; //Logic to compare and copy. The core Merge Logic of the Merge sort. while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } //Logic to copy remaining elements of L[] while (i < n1) { arr[k] = L[i]; i++; k++; } //Logic to copy remaining elements of R[] while (j < n2) { arr[k] = R[j]; j++; k++; } } //The main Merge Sort function from where the sorting begins void mergeSort(char arr[], int l, int r) { if (l < r) { // Find the middle point int m = l + (r - l) / 2; // Sort first and second halves mergeSort(arr, l, m); mergeSort(arr, m + 1, r); // Merge the sorted halves merge(arr, l, m, r); } } // A utility function to print char array of size n static void printArray(char arr[]) { int n = arr.length; for (int i = 0; i < n; ++i) System.out.print(arr[i] + ' '); System.out.println(); } // Driver code public static void main(String args[]) { String inputString = 'geeksforgeeks'; char arr[] = inputString.toCharArray(); System.out.println('Given array is'); printArray(arr); StringSort ob = new StringSort(); ob.mergeSort(arr, 0, arr.length - 1); System.out.println('
Sorted array is'); printArray(arr); } } /* This code is contributed by Nikhil B */> Produktion:
eeeefggkkorss>
Tidskomplexitet : O(n * log n). (där 'n' är storleken på indatasträngen.)
Metod 2: Av använda sort() metod
2A Genom att använda sort() metod- naturlig sortering
java läs csv
Procedur:
- Huvudlogiken är att toCharArray()-metoden av klassen String över inmatningssträngen för att skapa en teckenuppsättning för inmatningssträngen.
- Använd nu Arrays.sort(char c[]) metod för att sortera teckenuppsättning.
- Använd klasskonstruktorn String för att skapa en sorterad sträng från en char-array.
Exempel 1
Java // Java program to Sort a String Alphabetically // Using toCharArray() method // With using the sort() method // Importing Arrays class from java.util package import java.util.Arrays; // Main class public class GFG { // Method 1 // To sort a string alphabetically public static String sortString(String inputString) { // Converting input string to character array char tempArray[] = inputString.toCharArray(); // Sorting temp array using Arrays.sort(tempArray); // Returning new sorted string return new String(tempArray); } // Method 2 // Main driver method public static void main(String[] args) { // Custom string as input String inputString = 'geeksforgeeks'; String outputString = sortString(inputString); // Print and display commands // Input string System.out.println('Input String : ' + inputString); // Output string System.out.println('Output String : ' + outputString); } }> Produktion
Input String : geeksforgeeks Output String : eeeefggkkorss>
2B av använda sort() metod- Anpassad sortering
Arrays.sort(char c[]) metod sorterar tecken baserat på deras ASCII-värde, kan vi definiera vår egen Komparator att sortera en sträng.
Illustration:
Input String : techcodeview.com Output String : eeeefGGkkorss>
Procedur:
- Konvertera inmatningssträng till Karaktär array. Det finns ingen direkt metod för att göra det. Vi kommer att använda for loop för att fylla arrayen.
- Använda sig av Arrays.sort(T [ ], komparator c) metod för att sortera teckenarray. För detta måste vi genomföra jämföra() metod baserad på vårt anpassade sorteringsbeteende.
- Nu kan vi använda StringBuilder för att konvertera Character-arrayen till String.
Exempel 2
Java // Java Program to Sort a Mixed String Containing // Uppercase and Lowercase Characters // Importing required classes import java.util.Arrays; import java.util.Comparator; // Main class class GFG { // Method 1 // To sort a mixed string public static String sortString(String inputString) { // Converting input string to Character array Character tempArray[] = new Character[inputString.length()]; for (int i = 0; i < inputString.length(); i++) { tempArray[i] = inputString.charAt(i); } // Sort, ignoring case during sorting Arrays.sort(tempArray, new Comparator() { // Metod 2 // För att jämföra tecken @Override public int compare(Character c1, Character c2) { // Ignorerar skiftläge Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2)); } }); // Använda StringBuilder för att konvertera Character array till // String StringBuilder sb = new StringBuilder(tempArray.length); for (Tecken c : tempArray) sb.append(c.charValue()); returnera sb.toString(); } // Metod 3 // Huvuddrivrutinsmetod public static void main(String[] args) { // Anpassad inmatningssträng String inputString = 'techcodeview.com'; // Anropar metod 1 för att sortera indatasträng // och lagra i en sträng String outputString = sortString(inputString); // Skriv ut och visa in- och utmatningssträngarna System.out.println('Input String : ' + inputString); System.out.println('Output String: ' + outputString); } }> Produktion
Input String : techcodeview.com Output String : eeeefGGkkorss>
Notera:
public int compare(Object o1, Object o2) {}>
- måste returnera -ve om o1 måste komma före o2
- måste returnera +ve om o1 måste komma efter o2
- måste returnera 0 om o1 är lika med o2