Java反转字符串_极悦注册
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java反转字符串

Java反转字符串

更新时间:2022-08-31 10:47:58 来源:极悦 浏览806次

本文通过示例讨论了在 Java 中反转字符串的不同方法。

例子:

先决条件:Java中的String vs StringBuilder vs StringBuffer

以下是关于 String 和 StringBuilder 类的一些有趣事实:

String 的对象是不可变的。

Java中的String类没有reverse()方法,但是StringBuilder类有内置的reverse()方法。

StringBuilder 类没有 toCharArray() 方法,而 String 类有 toCharArray() 方法。

1.思路是遍历字符串的长度

2.遍历时提取每个字符

3.在现有字符串前面添加每个字符

执行:

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

将字符串转换为字节: getBytes() 方法用于将输入字符串转换为字节[]。

方法:

1. 创建一个长度相等的临时 byte[]到输入字符串的长度。

2.存储字节(我们通过使用

getBytes() 方法)以相反的顺序进入临时字节[]。

3. 使用 byte[] 创建一个新的 String abject存储结果。

执行:

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

使用 StringBuilder 类的内置 reverse() 方法:

String类没有reverse()方法,我们需要将输入的字符串转换为StringBuilder,通过StringBuilder的append方法实现。之后,通过从第一个索引到最后一个索引进行扫描,打印出反转字符串的字符。

执行:

// 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转换为字符数组通过使用内置的 Java String 类方法 toCharArray()。

2. 然后,从头到尾扫描字符串,并一一打印字符。

执行:

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

使用 toCharArray()将输入字符串转换为字符数组:

使用 String 类的内置方法 toCharArray() 将输入字符串转换为字符数组。然后,同时从两侧扫描字符数组,即从起始索引(左)和最后一个索引(右)。

1.设置left index等于0和right索引等于字符串 -1 的长度。

2.交换起始索引的字符使用最后一个索引扫描进行扫描逐个。之后,增加左边按 1 索引(左++)并减少右由 1 即,(右--)移动到下一个字符数组中的字符。

3. 继续直到左边小于等于正确的。

执行:

// 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();
	}
}

输出

斯基格罗夫斯基格

使用 ArrayList 对象:

使用内置的 toCharArray() 方法将输入字符串转换为字符数组。然后,将数组的字符添加到 ArrayList 对象中。Java 还为 Collections 类内置了 reverse() 方法。由于 Collections 类的 reverse() 方法接受一个列表对象,为了反转列表,我们将传递 ArrayList 对象,它是一种字符列表。

1.我们将String内容复制到一个对象数组列表。

2. 我们通过使用创建一个 ListIterator 对象ArrayList 上的 listIterator() 方法目的。

3. ListIterator 对象用于迭代名单。

4. ListIterator 对象帮助我们进行迭代在反向列表上并打印一个到输出屏幕。

执行:

// 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类没有reverse()方法,我们需要将输入的字符串转换为StringBuffer,这是通过StringBuffer的reverse方法来实现的。

执行:

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

在上面的代码中,我们实质上是在开始迭代循环以创建一个新的反转字符串之前从用户那里读取一个字符串。String类的“charAt”函数用于从末尾单独检索原始String的每个字符,“+”运算符用于将它们连接成一个新的String。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>