logo

Zoradiť reťazec v jazyku Java (2 rôzne spôsoby)

Trieda string nemá žiadnu metódu, ktorá priamo triedi reťazec, ale môžeme triediť reťazec tak, že použijeme ďalšie metódy jednu po druhej. Reťazec je postupnosť znakov. V jave sú objekty String nemenné, čo znamená konštantu a po vytvorení ich nemožno zmeniť.

Vytvorenie reťazca

Existujú dva spôsoby, ako vytvoriť reťazec v jazyku Java:



  • Reťazový doslov
String s = techcodeview.com;>
  • Použitím Nový kľúčové slovo
String s = new String (techcodeview.com);>

Poznámka: Ako vieme, String je nemenný v jave, preto v treťom kroku musíme vytvoriť nový reťazec.

Metódy:

Existujú dve metódy, pomocou ktorých môžeme abecedne zoradiť ľubovoľný reťazec v jazyku Java

bash čítaný súbor
  1. Bez použitia metódy sort().
  2. Pomocou metóda sort().

Ilustrácia:

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

Teraz poďme diskutovať o metódach a implementovať to isté.

Metóda 1: Bez použitia metódy sort().

Tu budeme klásť prístup k triedeniu reťazca bez použitia akejkoľvek preddefinovanej logiky. Stáva sa teda tiež dôležitým prístupom z hľadiska vnímania rozhovoru.

linux zmeniť názov adresára

Postup:

  1. Preveďte reťazec na pole pomocou metódy toCharArray() triedy String
  2. Teraz použite vnorené slučky na kontrolu výmeny prvkov poľa.
  3. Vytlačte tieto prvky poľa znakov.

Príklad

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

Výkon:

eeeefggkkorss>

Časová zložitosť : O(n * log n). (kde „n“ je veľkosť vstupného reťazca.)


Metóda 2: Podľa pomocou metóda sort().

2A Pomocou metóda sort()- prirodzené triedenie

Postup:

  1. Hlavnou logikou je metóda toCharArray(). triedy String nad vstupným reťazcom na vytvorenie poľa znakov pre vstupný reťazec.
  2. Teraz použite Arrays.sort(char c[]) metóda na triedenie poľa znakov.
  3. Pomocou konštruktora triedy String vytvorte triedený reťazec z poľa znakov.

Príklad 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);  } }>

Výkon
Input String : geeksforgeeks Output String : eeeefggkkorss>

2B Autor pomocou metóda sort()- Vlastné triedenie

Arrays.sort(char c[]) metódou triedenia znakov na základe ich ASCII hodnoty môžeme definovať vlastnú Porovnávač triediť reťazec.

reťazec poľa v c

Ilustrácia:

Input String : techcodeview.com Output String : eeeefGGkkorss>

Postup:

  1. Previesť vstupný reťazec na Charakter pole. Neexistuje žiadny priamy spôsob, ako to urobiť. Na vyplnenie poľa použijeme cyklus for.
  2. Použite Arrays.sort(T [ ], komparátor c) metóda na triedenie poľa znakov. Na to musíme implementovať porovnať () metóda založená na našom vlastnom spôsobe triedenia.
  3. Teraz môžeme použiť StringBuilder na konverziu poľa Character na String.

Príklad 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() { // Metóda 2 // Na porovnanie znakov @Prepísať public int Compare(Znak c1, Znak c2) { // Ignorovanie veľkých písmen return Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2));  } });  // Použitie StringBuilder na konverziu poľa znakov na // String StringBuilder sb = new StringBuilder(tempArray.length);  for (znak c : tempArray) sb.append(c.charValue());  return sb.toString();  } // Metóda 3 // Metóda ovládača MAin public static void main(String[] args) { // Vlastný vstupný reťazec String inputString = 'techcodeview.com';  // Volanie metódy 1 na triedenie vstupného reťazca // a ukladanie do reťazca String outputString = sortString(inputString);  // Vytlačí a zobrazí vstupné a výstupné reťazce System.out.println('Input String : ' + inputString);  System.out.println('Výstupný reťazec : ' + výstupný reťazec);  } }>

Výkon
Input String : techcodeview.com Output String : eeeefGGkkorss>

Poznámka:

public int compare(Object o1, Object o2) {}>
  • musieť vrátiť -ve, ak o1 má prísť pred o2
  • musis vratit +ve ak o1 musi prist po o2
  • musí vrátiť 0, ak sa o1 rovná o2