Hva er en omvendt streng?
Input String = "X Y Z";
Output String = "Z Y X"
Input String = "1 2 3";
Output String = "3 2 1";
Input String = "I love Java!";
Output String = "!avaJ evol I";
Hvordan snu en streng i Java?
Det er forskjellige måter å reversere en streng i Java. Java gir imidlertid ingen reverse()- metode for String- klassen. Den naive tilnærmingen begynner med å bruke for loop. Den tradisjonelle iterative prosedyren. Senere kan vi bygge det opp ved å bruke reverse() -metoder som tilbys av andre klasser som StringBuilder og StringBuffer .Metode 1 - The Old School Iterative Way
public class StringReversal {
public static String reverseInputString(String myString) {
if (myString == null)
return myString;
String reverseString = "";
for (int i = myString.length() - 1; i >= 0; i--) {
reverseString = reverseString + myString.charAt(i);
}
return reverseString;
}
public static void main(String[] args) {
String myString1 = "X Y Z";
System.out.println("reverse(" + myString1 + ") = " + reverseInputString(myString1));
String myString2 = "1 2 3";
System.out.println("reverse(" + myString2 + ") = " + reverseInputString(myString2));
String myString3 = "I LOVE JAVA!";
System.out.println("reverse(" + myString3 + ") = " + reverseInputString(myString3));
String myString4 = "My favourite place to learn Java is CodeGym.";
System.out.println("reverse(" + myString4 + ") = " + reverseInputString(myString4));
String myString5 = "My name is Lubaina Khan.";
System.out.println("reverse(" + myString5 + ") = " + reverseInputString(myString5));
// Boundary Case to see what happens if a String is null
String myString6 = null;
System.out.println("reverse(" + myString6 + ") = " + reverseInputString(myString6));
// Boundary Case to see what happens if a String is empty
String myString7 = "";
System.out.println("reverse(" + myString7 + ") = " + reverseInputString(myString7));
}
}
Produksjon
reverse(XYZ) = ZYX reverse(1 2 3) = 3 2 1 reverse(I LOVE JAVA!) = !AVAJ EVOL I reverse(Min favoritt plass å lære Java er CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM reverse(Mitt navn er Lubaina Khan.) = .nahK aniabuL si eman yM reverse(null) = null reverse() =
Forklaring
public static String reverseInputString(String myString) { ... }
Metoden reverseInputString tar en inngangsstreng kalt myString .
if (myString == null)
return myString;
Sjekk om inndatastrengen , dvs. myString, er null. Hvis funnet null, returner inndata som det er. Vi trenger ikke gå videre. Dette kalles grensesaksbehandling for å unngå eventuelle feil.
String reverseString = "";
Erklær en tom streng for å lagre utdataene.
for (int i = myString.length() - 1; i >= 0; i--) {
reverseString = reverseString + myString.charAt(i);
}
Bruk en normal for loop. Initialiser iteratoren i fra den siste indeksen til inndatastrengen . Få tilgang til den siste indeksen til inndatastrengen og lagre den i utdatastrengen. Fortsett å gjenta til du kommer til den 0. indeksen eller begynnelsen av inndatastrengen.
return reverseString;
Returner reverseString og bruk den i henhold til dine krav.
Metode 2 - Bruken av strengbyggerklassen
I Java kan ikke innholdet i en streng endres når den først er initialisert. Derfor er det ingen reverse()- metode tilgjengelig for String s. Men andre klasser som StringBuilder og StringBuffer i Java inneholder innhold som kan endres eller endres. For å snu en streng uten løkker og bruke den innebygde StringBuilder- eller StringBuffer -klassen, la oss se på et eksempel nedenfor.
public class StringBuilderReversal {
public static void main(String[] args) {
String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
String input2 = "0 1 2 2 3 3 3";
StringBuilder inputText2 = new StringBuilder(input2);
System.out.println("reverse(" + inputText2 + ") = " + inputText2.reverse());
String input3 = "Monday";
StringBuilder inputText3 = new StringBuilder(input3);
System.out.println("reverse(" + inputText3 + ") = " + inputText3.reverse());
String input4 = "I love CodeGym!";
StringBuilder inputText4 = new StringBuilder(input4);
System.out.println("reverse(" + inputText4 + ") = " + inputText4.reverse());
// ReverseString using the StringBuilder class
StringBuilder inputText5 = new StringBuilder("Reverse this String using StringBuilder Class.");
System.out.println("reverse(" + inputText5 + ") = " + inputText5.reverse());
// ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
System.out.println("reverse(" + inputText6 + ") = " + inputText6.reverse());
}
}
Produksjon
reverse(ABC) = CBA reverse(0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 reverse(mandag) = yadnoM reverse(jeg elsker CodeGym!) = !myGedoC evol I reverse(Reversere denne strengen med StringBuilder Class .) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR reverse(Reverser denne strengen ved å bruke StringBuffer Class.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR
Forklaring
String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
For å reversere inndatastrengen må du konvertere den til StringBuilder . For det, send inndatastrengen til StringBuilder - konstruktøren.
System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
Etter å ha konvertert String til StringBuilder , kan du få det motsatte og skrive ut utdataene.
// ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
Alternativt kan du sende en streng direkte til StringBuilder eller StringBuffer .
GO TO FULL VERSION