Hvad 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 vendes en streng i Java?
Der er forskellige måder at vende en streng på i Java. Java giver dog ikke nogen reverse()- metode til String- klassen. Den naive tilgang begynder med at bruge for loop. Den traditionelle iterative procedure. Senere kan vi bygge det op ved at bruge reverse() metoder, der tilbydes af 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));
}
}
Produktion
reverse(XYZ) = ZYX reverse(1 2 3) = 3 2 1 reverse(I LOVE JAVA!) = !AVAJ EVOL I reverse(Mit yndlingssted at lære Java er CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM reverse(mit navn er Lubaina Khan.) = .nahK aniabuL si eman yM reverse(null) = null reverse() =
Forklaring
public static String reverseInputString(String myString) { ... }
Metoden reverseInputString tager en inputstreng kaldet myString .
if (myString == null)
return myString;
Kontroller, om input- strengen, dvs. myString, er nul. Hvis fundet null, returner inputtet, som det er. Vi behøver ikke at komme videre. Dette kaldes grænsesagsbehandling for at undgå eventuelle fejl.
String reverseString = "";
Erklær en tom streng for at gemme outputtet.
for (int i = myString.length() - 1; i >= 0; i--) {
reverseString = reverseString + myString.charAt(i);
}
Brug en normal for loop. Initialiser iteratoren i fra det sidste indeks af inputstrengen . Få adgang til det sidste indeks for inputstrengen, og gem det i outputstrengen. Fortsæt med at gentage, indtil du når det 0. indeks eller begyndelsen af inputstrengen.
return reverseString;
Returner reverseString og brug den i henhold til dine krav.
Metode 2 - Brugen af String Builder Class
I Java kan indholdet af en streng , når den først er initialiseret, ikke ændres. Derfor er der ingen reverse() metode tilgængelig for String s. Men andre klasser som StringBuilder og StringBuffer i Java indeholder indhold, der kan ændres eller ændres. For at vende en streng uden sløjfer og bruge den indbyggede StringBuilder- eller StringBuffer- klasse, lad os 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());
}
}
Produktion
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(Vend denne streng ved hjælp af StringBuilder Class .) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR reverse(Vend denne streng ved hjælp af StringBuffer Class.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR
Forklaring
String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
For at vende input- strengen skal du konvertere den til StringBuilder . For at gøre det skal du videregive input- strengen til StringBuilder- konstruktøren.
System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
Efter at have konverteret String til StringBuilder , kan du få dens omvendte side og udskrive outputtet.
// 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