Java练习(第4天)【总结】反转字符串的9种不同实现方法

14 篇文章 0 订阅

一、问题描述

给定一个字符串,输出反转后的字符串。

样例输入1: abc
样例输出1: cba

样例输入2: GeeksforGeeks
样例输出2: skeeGrofskeeG

二、Java实现(九个程序)

1、实现1

思想: 逐个取 + 倒序拼

Java代码:

import java.io.*;
import java.util.Scanner;
public class Method_1
{
    public static void main(String args[])
	 {
	 		String str = "Geeks", nstr = "";
			char ch;
			System.out.print("Original word: ");
			System.out.println(str);
			
			for(int i = 0;i < str.length();i ++)
			{
					ch = str.charAt(i);
					nstr = ch + nstr;
			}
			
			System.out.println("Reversed word: " + nstr);   
    }
}

样例输出:

在这里插入图片描述

2、实现2

思想: 转字节串倒序输出

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_2
{
    public static void main(String args[])
	 {
	 		String input = "GeeksforGeeks";
			byte [] strAsByteArray = input.getBytes();
			byte [] result = new byte[strAsByteArray.length];
			
			for (int i = 0;i < strAsByteArray.length;i ++)
			{
					result[i] = strAsByteArray[strAsByteArray.length - i - 1];
			}
			System.out.println("original string: " + input);
			System.out.println("original converted byte string: " + strAsByteArray);
			System.out.println("reversed byte string: " + result);
			System.out.println("reversed string: " + new String(result));
    }
}

样例输出:

在这里插入图片描述

3、实现3

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

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_3
{
	   public static void main(String args[])
	   {
	   		String input = "Geeks for Geeks";
			   StringBuilder input1 = new StringBuilder();
			   input1.append(input);
			   input1.reverse();
			   
			   System.out.println("Original String: " + input);
			   System.out.println("Reversed String: " + input1);
    }
}

样例输出:

在这里插入图片描述

4、实现4

思想: 转字符数组CharArray前后倒转Swap

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_4
{
    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 --)
			{
					char temp = temparray[left];
					temparray[left] = temparray[right];
					temparray[right] = temp;
			}
			System.out.println("Original string: " + input);
			System.out.print("Reversed string: ");
			for (char c : temparray)
			{
					System.out.print(c);
			}
			System.out.println();
    }
}

样例输出:

在这里插入图片描述

5、实现5

思想(类似实现4): 转字符数组CharArray逆序输出

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_5
{
    public static void main(String args[])
	 {
	 		String input = "GeeksForGeeks";
			char [] try1 = input.toCharArray();
			System.out.println("Original string: " + input);
			System.out.print("Reversed string: ");
			for (int i = try1.length - 1; i >= 0;i --)
			{
					System.out.print(try1[i]);
			}
    }
}

样例输出:

在这里插入图片描述

6、实现6

思想: 使用ArrayList对象ListIterator迭代变量

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_6
{
    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();
			 
			System.out.println("Original string: " + input);
			System.out.print("Reversed string: ");
			while (Li.hasNext())
			{
					System.out.print(Li.next());
			}
    }
}

样例输出:

在这里插入图片描述

7、实现7

思想: 使用StringBuffer类内置的reverse()方法

Java代码:

import java.lang.*;
import java.io.*;
import java.util.*;

public class Method_7
{
    public static void main(String args[])
	 {
	 		String str = "GeeksforGeeks";
			StringBuffer sbr = new StringBuffer(str);
			sbr.reverse();
			
			System.out.println("Original string: " + str);
			System.out.println("Reversed string: " + sbr);     
    }
}

样例输出:

在这里插入图片描述

8、实现8

思想(类似实现4): 转字符数组不同之处:读取用户输入

Java代码:

import java.io.*;
import java.util.Scanner;

public class Method_8
{
    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("Original string: " + Str);
			System.out.println("Reversed string: " + rev);
    }
}

样例输入:

在这里插入图片描述

样例输出:

在这里插入图片描述

9、实现9

思想: 使用堆栈的LIFO(Last-in First-out,后入先出)性质

java代码:

import java.util.*;

public class Method_9
{
    public static void main(String args[])
	 {
	 		String s = "Geeks for Geeks";
			
			Stack<Character> stack = new Stack<>();
			
			for (char c : s.toCharArray())
			{
					stack.push(c);
			}
			String temp = "";
			while (! stack.isEmpty())
			{
					temp += stack.pop();
			}
			
			System.out.println("Original string: " + s);
			System.out.println("Reversed string: " + temp);
    }
}

样例输出:

在这里插入图片描述

参考

Geeks for Geeks.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值