更新時(shí)間:2022-08-31 10:47:58 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1154次
本文通過(guò)示例討論了在 Java 中反轉(zhuǎn)字符串的不同方法。
例子:
先決條件:Java中的String vs StringBuilder vs StringBuffer
String 的對(duì)象是不可變的。
Java中的String類沒(méi)有reverse()方法,但是StringBuilder類有內(nèi)置的reverse()方法。
StringBuilder 類沒(méi)有 toCharArray() 方法,而 String 類有 toCharArray() 方法。
1.思路是遍歷字符串的長(zhǎng)度
2.遍歷時(shí)提取每個(gè)字符
3.在現(xiàn)有字符串前面添加每個(gè)字符
執(zhí)行:
// java program to reverse a word
import java.io.*;
import java.util.Scanner;
class GFG {
public static void main (String[] args) {
String str= "Geeks", nstr="";
char ch;
System.out.print("Original word: ");
System.out.println("Geeks"); //Example word
for (int i=0; i<str.length(); i++)
{
ch= str.charAt(i); //extracts each character
nstr= ch+nstr; //adds each character in front of the existing string
}
System.out.println("Reversed word: "+ nstr);
}
}
//Contributed by Tiyasa
輸出
原詞:極客
反義詞:skeeG
方法:
1. 創(chuàng)建一個(gè)長(zhǎng)度相等的臨時(shí) byte[]到輸入字符串的長(zhǎng)度。
2.存儲(chǔ)字節(jié)(我們通過(guò)使用
getBytes() 方法)以相反的順序進(jìn)入臨時(shí)字節(jié)[]。
3. 使用 byte[] 創(chuàng)建一個(gè)新的 String abject存儲(chǔ)結(jié)果。
執(zhí)行:
// Java program to ReverseString using ByteArray.
import java.lang.*;
import java.io.*;
import java.util.*;
// Class of ReverseString
class ReverseString {
public static void main(String[] args)
{
String input = "GeeksforGeeks";
// getBytes() method to convert string
// into bytes[].
byte[] strAsByteArray = input.getBytes();
byte[] result = new byte[strAsByteArray.length];
// Store result in reverse order into the
// result byte[]
for (int i = 0; i < strAsByteArray.length; i++)
result[i] = strAsByteArray[strAsByteArray.length - i - 1];
System.out.println(new String(result));
}
}
輸出
skeeGrofskeeG
String類沒(méi)有reverse()方法,我們需要將輸入的字符串轉(zhuǎn)換為StringBuilder,通過(guò)StringBuilder的append方法實(shí)現(xiàn)。之后,通過(guò)從第一個(gè)索引到最后一個(gè)索引進(jìn)行掃描,打印出反轉(zhuǎn)字符串的字符。
執(zhí)行:
// Java program to ReverseString using StringBuilder
import java.lang.*;
import java.io.*;
import java.util.*;
// Class of ReverseString
class ReverseString {
public static void main(String[] args)
{
String input = "Geeks for Geeks";
StringBuilder input1 = new StringBuilder();
// append a string into StringBuilder input1
input1.append(input);
// reverse StringBuilder input1
input1.reverse();
// print reversed String
System.out.println(input1);
}
}
輸出
skeeG rof skeeG
方法:
1.首先將String轉(zhuǎn)換為字符數(shù)組通過(guò)使用內(nèi)置的 Java String 類方法 toCharArray()。
2. 然后,從頭到尾掃描字符串,并一一打印字符。
執(zhí)行:
// Java program to Reverse a String by
// converting string to characters one
// by one
import java.lang.*;
import java.io.*;
import java.util.*;
// Class of ReverseString
class ReverseString {
public static void main(String[] args)
{
String input = "GeeksForGeeks";
// convert String to character array
// by using toCharArray
char[] try1 = input.toCharArray();
for (int i = try1.length - 1; i >= 0; i--)
System.out.print(try1[i]);
}
}
輸出
skeeGroFskeeG
使用 String 類的內(nèi)置方法 toCharArray() 將輸入字符串轉(zhuǎn)換為字符數(shù)組。然后,同時(shí)從兩側(cè)掃描字符數(shù)組,即從起始索引(左)和最后一個(gè)索引(右)。
1.設(shè)置left index等于0和right索引等于字符串 -1 的長(zhǎng)度。
2.交換起始索引的字符使用最后一個(gè)索引掃描進(jìn)行掃描逐個(gè)。之后,增加左邊按 1 索引(左++)并減少右由 1 即,(右--)移動(dòng)到下一個(gè)字符數(shù)組中的字符。
3. 繼續(xù)直到左邊小于等于正確的。
執(zhí)行:
// Java program to Reverse a String using swapping
// of variables
import java.lang.*;
import java.io.*;
import java.util.*;
// Class of ReverseString
class ReverseString {
public static void main(String[] args)
{
String input = "Geeks For Geeks";
char[] temparray = input.toCharArray();
int left, right = 0;
right = temparray.length - 1;
for (left = 0; left < right; left++, right--) {
// Swap values of left and right
char temp = temparray[left];
temparray[left] = temparray[right];
temparray[right] = temp;
}
for (char c : temparray)
System.out.print(c);
System.out.println();
}
}
輸出
斯基格羅夫斯基格
使用內(nèi)置的 toCharArray() 方法將輸入字符串轉(zhuǎn)換為字符數(shù)組。然后,將數(shù)組的字符添加到 ArrayList 對(duì)象中。Java 還為 Collections 類內(nèi)置了 reverse() 方法。由于 Collections 類的 reverse() 方法接受一個(gè)列表對(duì)象,為了反轉(zhuǎn)列表,我們將傳遞 ArrayList 對(duì)象,它是一種字符列表。
1.我們將String內(nèi)容復(fù)制到一個(gè)對(duì)象數(shù)組列表。
2. 我們通過(guò)使用創(chuàng)建一個(gè) ListIterator 對(duì)象ArrayList 上的 listIterator() 方法目的。
3. ListIterator 對(duì)象用于迭代名單。
4. ListIterator 對(duì)象幫助我們進(jìn)行迭代在反向列表上并打印一個(gè)到輸出屏幕。
執(zhí)行:
// Java program to Reverse a String using ListIterator
import java.lang.*;
import java.io.*;
import java.util.*;
// Class of ReverseString
class ReverseString {
public static void main(String[] args)
{
String input = "Geeks For Geeks";
char[] hello = input.toCharArray();
List<Character> trial1 = new ArrayList<>();
for (char c : hello)
trial1.add(c);
Collections.reverse(trial1);
ListIterator li = trial1.listIterator();
while (li.hasNext())
System.out.print(li.next());
}
}
輸出
斯基格羅夫斯基格
String類沒(méi)有reverse()方法,我們需要將輸入的字符串轉(zhuǎn)換為StringBuffer,這是通過(guò)StringBuffer的reverse方法來(lái)實(shí)現(xiàn)的。
執(zhí)行:
// Java program to demonstrate conversion from
// String to StringBuffer and reverse of string
import java.lang.*;
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args)
{
String str = "Geeks";
// conversion from String object to StringBuffer
StringBuffer sbr = new StringBuffer(str);
// To reverse the string
sbr.reverse();
System.out.println(sbr);
}
}
輸出
斯基格
/*package whatever //do not write package name here */
import java.io.*;
import java.util.Scanner;
class GFG {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
String Str = scanner.nextLine();
char[] arr = Str.toCharArray();
String rev = "";
for(int i = Str.length() - 1; i >= 0; i--)
{
rev = rev + Str.charAt(i);
}
System.out.println(rev);
}
}
輸出
0
在上面的代碼中,我們實(shí)質(zhì)上是在開始迭代循環(huán)以創(chuàng)建一個(gè)新的反轉(zhuǎn)字符串之前從用戶那里讀取一個(gè)字符串。String類的“charAt”函數(shù)用于從末尾單獨(dú)檢索原始String的每個(gè)字符,“+”運(yùn)算符用于將它們連接成一個(gè)新的String。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743