logo

Sortieren Sie einen String in Java (2 verschiedene Arten)

Die String-Klasse verfügt über keine Methode, die einen String direkt sortiert, aber wir können einen String sortieren, indem wir nacheinander andere Methoden anwenden. Die Zeichenfolge ist eine Folge von Zeichen. In Java sind String-Objekte unveränderlich, was bedeutet, dass sie eine Konstante sind und nach ihrer Erstellung nicht mehr geändert werden können.

Erstellen einer Zeichenfolge

Es gibt zwei Möglichkeiten, eine Zeichenfolge in Java zu erstellen:



  • String-Literal
String s = techcodeview.com;>
  • Benutzen neu Stichwort
String s = new String (techcodeview.com);>

Notiz: Wie wir wissen, ist String unveränderlich in Java, daher müssen wir im dritten Schritt einen neuen String erstellen.

Methoden:

Es gibt zwei Methoden, mit denen wir jede Zeichenfolge in Java alphabetisch sortieren können

vergleiche mit Java
  1. Ohne die Methode sort() zu verwenden
  2. Durch die Verwendung der sort()-Methode

Illustration:

Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>

Lassen Sie uns nun Methoden besprechen und diese implementieren.

Methode 1: Ohne die Methode sort() zu verwenden

Hier legen wir einen Ansatz zum Sortieren einer Zeichenfolge fest, ohne eine vordefinierte Logik zu verwenden. Daher wird es auch aus Sicht der Interviewwahrnehmung zu einem wichtigen Ansatz.

Hrithik Roshan

Verfahren:

  1. Konvertieren Sie einen String mit Hilfe der toCharArray()-Methode der String-Klasse in ein Array
  2. Verwenden Sie nun verschachtelte Schleifen, um zu prüfen, ob Elemente eines Arrays ausgetauscht werden.
  3. Drucken Sie diese Zeichenarray-Elemente.

Beispiel

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 */>

Ausgabe:

eeeefggkkorss>

Zeitkomplexität : O(n * log n). (wobei „n“ die Größe der Eingabezeichenfolge ist.)


Methode 2: Von Verwendung der sort()-Methode

2A Durch die Verwendung der sort()-Methode- natürliche Sortierung

Verfahren:

  1. Die Hauptlogik besteht darin toCharArray()-Methode der String-Klasse über die Eingabezeichenfolge, um ein Zeichenarray für die Eingabezeichenfolge zu erstellen.
  2. Jetzt benutzen Arrays.sort(char c[]) Methode zum Sortieren des Zeichenarrays.
  3. Verwenden Sie den String-Klassenkonstruktor, um eine sortierte Zeichenfolge aus einem char-Array zu erstellen.

Beispiel 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);  } }>

Ausgabe
Input String : geeksforgeeks Output String : eeeefggkkorss>

2B von Verwendung der sort()-Methode- Benutzerdefinierte Sortierung

Kat Timpf Vermögen

Arrays.sort(char c[]) Wenn wir die Methode verwenden, um Zeichen basierend auf ihrem ASCII-Wert zu sortieren, können wir unsere benutzerdefinierten Werte definieren Komparator um eine Zeichenfolge zu sortieren.

Illustration:

Input String : techcodeview.com Output String : eeeefGGkkorss>

Verfahren:

  1. Eingabezeichenfolge konvertieren in Charakter Array. Es gibt keine direkte Methode dafür. Wir werden eine for-Schleife verwenden, um das Array zu füllen.
  2. Verwenden Arrays.sort(T [ ], Komparator c) Methode zum Sortieren des Zeichenarrays. Dafür müssen wir umsetzen vergleichen() Methode basierend auf unserem benutzerdefinierten Sortierverhalten.
  3. Jetzt können wir StringBuilder verwenden, um das Zeichenarray in String zu konvertieren.

Beispiel 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() { // Methode 2 // Zum Vergleichen von Zeichen @Override public int Compare(Character c1, Character c2) { // Groß- und Kleinschreibung ignorieren return Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2));  } });  // Verwenden von StringBuilder zum Konvertieren eines Zeichenarrays in // String StringBuilder sb = new StringBuilder(tempArray.length);  for (Character c : tempArray) sb.append(c.charValue());  return sb.toString();  } // Methode 3 // MAin-Treibermethode public static void main(String[] args) { // Benutzerdefinierte Eingabezeichenfolge String inputString = 'techcodeview.com';  // Methode 1 aufrufen, um die Eingabezeichenfolge zu sortieren // und in einer Zeichenfolge speichern String outputString = sortString(inputString);  // Eingabe- und Ausgabezeichenfolgen drucken und anzeigen System.out.println('Input String : ' + inputString);  System.out.println('Ausgabezeichenfolge: ' + Ausgabezeichenfolge);  } }>

Ausgabe
Input String : techcodeview.com Output String : eeeefGGkkorss>

Notiz:

public int compare(Object o1, Object o2) {}>
  • muss -ve zurückgeben, wenn o1 vor o2 kommen muss
  • muss +ve zurückgeben, wenn o1 nach o2 kommen muss
  • muss 0 zurückgeben, wenn o1 gleich o2 ist