java byte 反转_Java 反转字符串的 10 种方法

2023-05-16

原标题:Java 反转字符串的 10 种方法

来源:ImportNew - 唐尤华

在这篇文章中,我们会讨论10种用Java反转字符串的方法,通过10个Java程序反转字符串。例如,把字符串“javaguides” 反转为 “sediugavaj”。

1. 使用 + (String连接) 操作符

package net.javaguides.corejava.string;

/**

*

* @author Ramesh Fadatare

*

*/

public class ReverseWithStringConcat {

ReverseWithStringConcat concat = new ReverseWithStringConcat();

concat.reverseWithStringConcat("javaguides");

}

private String reverseWithStringConcat(String input) {

String output = new String();

for (int i = (input.length() - 1); i >= 0; i--) {

output += (input.charAt(i));

}

display(input, output);

return output;

}

private void display(String input, String output) {

System.out.println(" input string :: " + input);

System.out.println(" output string :: " + output);

}

}

输出:

input string :: javaguides

output string :: sediugavaj

2. 使用 StringBuilder

package net.javaguides.corejava.string;

/**

*

* @author Ramesh Fadatare

*

*/

public class ReverseWithStringBuilderBuiltinMethod {

ReverseWithStringBuilderBuiltinMethod builtinMethod = new ReverseWithStringBuilderBuiltinMethod();

builtinMethod.reverseWithStringBuilderBuiltinMethod("javaguides");

}

public String reverseWithStringBuilderBuiltinMethod(String string) {

final StringBuilder builder = new StringBuilder(string);

display(string, builder.reverse().toString());

return builder.reverse().toString();

}

private void display(String input, String output) {

System.out.println(" input string :: " + input);

System.out.println(" output string :: " + output);

}

}

输出:

input string :: javaguides

output string :: sediugavaj

3. 使用 String charAt 方法

package net.javaguides.corejava.string;

/**

*

* @author Ramesh Fadatare

*

*/

public class ReverseWithStringChatAt{

ReverseWithStringChatAt reverseWithStringBuilder = new ReverseWithStringChatAt();

reverseWithStringBuilder.reverseWithStringBuilder("javaguides");

}

public String reverseWithStringChatAt(String string) {

final StringBuilder builder = new StringBuilder();

for (int i = (string.length() - 1); i >= 0; i--) {

builder.append(string.charAt(i));

}

display(string, builder.toString());

return builder.toString();

}

private void display(String input, String output) {

System.out.println(" input string :: " + input);

System.out.println(" output string :: " + output);

}

}

输出:

input string :: javaguides

output string :: sediugavaj

4. 通过交换字符反转

package net.javaguides.corejava.string;

/**

*

* @author Ramesh Fadatare

*

*/

public class ReverseStringWithSwaps {

ReverseStringWithSwaps stringWithSwaps = new ReverseStringWithSwaps();

stringWithSwaps.reverseWithSwaps("javaguides");

}

public String reverseWithSwaps(String string) {

final char[] array = string.toCharArray();

final int length = array.length - 1;

final int half = (int) Math.floor(array.length / 2);

char c;

for (int i = length; i >= half; i--) {

c = array[length - i];

array[length - i] = array[i];

array[i] = c;

}

display(string, String.valueOf(array));

return String.valueOf(array);

}

private void display(String input, String output) {

System.out.println(" input string :: " + input);

System.out.println(" output string :: " + output);

}

}

输出:

input string :: javaguides

output string :: sediugavaj

5. 使用 XOR(^) 操作符反转

package net.javaguides.corejava.string;

/**

*

* @author Ramesh Fadatare

*

*/

public class ReverseStringWithXOR {

ReverseStringWithXOR stringWithXOR = new ReverseStringWithXOR();

stringWithXOR.reverseWithXOR("javaguides");

}

public String reverseWithXOR(String string) {

final char[] array = string.toCharArray();

final int length = array.length;

final int half = (int) Math.floor(array.length / 2);

for (int i = 0; i < half; i++) {

array[i] ^= array[length - i - 1];

array[length - i - 1] ^= array[i];

array[i] ^= array[length - i - 1];

}

display(string, String.valueOf(array));

return String.valueOf(array);

}

private void display(String input, String output) {

System.out.println(" input string :: " + input);

System.out.println(" output string :: " + output);

}

}

输出:

input string :: javaguides

output string :: sediugavaj

6. 使用堆栈

package net.javaguides.corejava.string;

import java.util.Stack;

/**

*

* @author Ramesh Fadatare

*

*/

public class ReverseStringUsingStack {

// Function to reverse a string in Java using a stack and character array

public static String reverse(String str) {

// base case: if string is null or empty

if (str == null || str.equals(""))

return str;

// create an empty stack of characters

Stack < Character > stack = new Stack < Character > ();

// push every character of the given string into the stack

char[] ch = str.toCharArray();

for (int i = 0; i < str.length(); i++)

stack.push(ch[i]);

// start from index 0

int k = 0;

// pop characters from the stack until it is empty

while (!stack.isEmpty()) {

// assign each popped character back to the character array

ch[k++] = stack.pop();

}

// convert the character array into string and return it

return String.copyValueOf(ch);

}

String str = "javaguides";

str = reverse(str); // string is immutable

System.out.println("Reverse of the given string is : " + str);

}

}

输出:

Reverse of the given string is : sediugavaj

7. 使用 Collections reverse() 方法

package net.javaguides.corejava.string;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

/**

*

* @author Ramesh Fadatare

*

*/

public class ReverseStringUsingCollectionsReverseMethod {

// Function to reverse a string in Java using Collections.reverse()

public static String reverse(String str) {

// base case: if string is null or empty

if (str == null || str.equals(""))

return str;

// create an empty list of characters

List < Character > list = new ArrayList < Character > ();

// push every character of the given string into it

for (char c: str.toCharArray())

list.add(c);

// reverse list using java.util.Collections reverse()

Collections.reverse(list);

// covert ArrayList into String using StringBuilder and return it

StringBuilder builder = new StringBuilder(list.size());

for (Character c: list)

builder.append(c);

return builder.toString();

}

String str = "Java Guides";

// String is immutable

str = reverse(str);

System.out.println("Reverse of the given string is : " + str);

}

}

输出:

Reverse of the given string is : sediuG avaJ

8. 使用 Byte 数组

package net.javaguides.corejava.string;

/**

*

* @author Ramesh Fadatare

*

*/

public class ReverseStringUsingByteArray {

// Function to reverse a string in Java using byte array

public static String reverse(String str) {

// return if string is null or empty

if (str == null || str.equals(""))

return str;

// convert string into bytes

byte[] bytes = str.getBytes();

// start from the two end points l and h of the given string

// and increment l & decrement h at each iteration of the loop

// until two end-points intersect (l >= h)

for (int l = 0, h = str.length() - 1; l < h; l++, h--) {

// Swap values at l and h

byte temp = bytes[l];

bytes[l] = bytes[h];

bytes[h] = temp;

}

// convert byte array back into the string

return new String(bytes);

}

String str = "Java Guides";

// String is immutable

str = reverse(str);

System.out.println("Reverse of the given string is : " + str);

}

}

输出:

Reverse of the given string is : sediuG avaJ

9. 使用 substring() 方法

package net.javaguides.corejava.string;

/**

*

* @author Ramesh Fadatare

*

*/

public class UsingSubStringFunction {

// Function to reverse a string in Java using recursion

private static String reverse(String str) {

// base case: if string is null or empty

if (str == null || str.equals(""))

return str;

// last character + recurse for remaining string

return str.charAt(str.length() - 1) + reverse(str.substring(0, str.length() - 1));

}

String str = "javaguides";

// string is immutable

str = reverse(str);

System.out.println("Reverse of the given string is : " + str);

}

}

输出:

Reverse of the given string is : sediugavaj

10. 使用递归

package net.javaguides.corejava.string;

/**

*

* @author Ramesh Fadatare

*

*/

public class UsingRecursion {

static int i = 0;

// Recursive function to reverse a string in Java using static variable

private static void reverse(char[] str, int k) {

// if we have reached the end of the string

if (k == str.length)

return;

// recurse for next character

reverse(str, k + 1);

if (i <= k) {

char temp = str[k];

str[k] = str[i];

str[i++] = temp;

}

}

public static String reverse(String str) {

// base case: if string is null or empty

if (str == null || str.equals(""))

return str;

// convert string into a character array

char[] A = str.toCharArray();

// reverse character array

reverse(A, 0);

// convert character array into the string

return String.copyValueOf(A);

}

String str = "Java Guides";

// string is immutable

str = reverse(str);

System.out.println("Reverse of the given string is : " + str);

}

}

输出:

Reverse of the given string is : sediuG avaJ

Java String Class API 指南 http://www.javaguides.net/2018/08/java-string-class-api-guide.html

Java String 常量池指南 http://www.javaguides.net/2018/07/guide-to-java-string-constant-pool.html

Java String 方法实例 http://www.javaguides.net/2018/08/java-string-methods-with-examples.html

Java String 最佳实践 http://www.javaguides.net/2018/06/guide-to-string-best-practices-in-java.html

String 特殊操作符实例 http://www.javaguides.net/2018/08/string-special-operations-with-examples.html

String 比较函数实例 http://www.javaguides.net/2018/08/string-comparison-methods-with-examples.html

String 字符提取函数 http://www.javaguides.net/2018/08/string-methods-for-character-extraction.html

String 搜索函数实例 http://www.javaguides.net/2018/08/string-searching-methods-with-examples.html

String 修改函数实例 http://www.javaguides.net/2018/08/string-modifying-methods-with-examples.html

Java StringBuffer Class API 指南 http://www.javaguides.net/2018/08/java-stringbuffer-class-api-guide.html

Java StringBuilder Class 方法 http://www.javaguides.net/2018/08/stringbuilder-class-methods-in-java.html

Java StringBuffer Class 方法 http://www.javaguides.net/2018/08/stringbuffer-class-methods-in-java.html

Java StringBuilder Class API 指南 http://www.javaguides.net/2018/08/java-stringbuilder-class-api-guide.html

Java 8 StringJoiner Class http://www.javaguides.net/2018/07/java-8-stringjoiner-class.html

【关于投稿】

如果大家有原创好文投稿,请直接给公号发送留言。返回搜狐,查看更多

责任编辑:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java byte 反转_Java 反转字符串的 10 种方法 的相关文章

  • 基于STM32之UART串口通信协议(一)详解

    一 前言 1 简介 写的这篇博客 xff0c 是为了简单讲解一下UART通信协议 xff0c 以及UART能够实现的一些功能 xff0c 还有有关使用STM32CubeMX来配置芯片的一些操作 xff0c 在后面我会以我使用的STM32F4
  • Java内存分配及值、引用的传递

    关于堆栈的内容网上已经有很多资料了 xff0c 这是我找的加上自己理解的一篇说明文 xff1a 一 内存区域类型 1 寄存器 xff1a 最快的存储区 由编译器根据需求进行分配 我们在程序中无法控制 xff1b 2 栈 xff1a 存放基本
  • NEMA-0183(GPRMC GPGGA)详细解释

    NEMA 0183 GPRMC GPGGA 详细解释 nmea数据如下 xff1a GPGGA 121252 000 3937 3032 N 11611 6046 E 1 05 2 0 45 9 M 5 7 M 0000 77 GPRMC
  • [转]printf 函数实现的深入剖析

    研究printf的实现 xff0c 首先来看看printf函数的函数体 int printf const char fmt int i char buf 256 va list arg 61 va list char amp fmt 43
  • http_parser

    最近读了 http parser 的源码 xff0c 记录下 有意思的地方 xff1a 1 协议解析可以不完全解析完 xff0c 但是当前 parser 会记录解析状态 xff0c 这样可以继续解析 2 协议解析首要还是要了解协议本身 xf
  • linux 网络编程 3---(io多路复用,tcp并发)

    1 xff0c io模型 xff1a 阻塞io 非阻塞io io多路复用 xff0c 信号驱动io 阻塞Io与非阻塞io的转换 xff0c 可用fcntl 函数 include lt unistd h gt include lt fcntl
  • 计算机网络socket实验报告,计算机网络socket编程实验报告

    计算机网络socket编程实验报告 由会员分享 xff0c 可在线阅读 xff0c 更多相关 计算机网络socket编程实验报告 4页珍藏版 请在人人文库网上搜索 1 实课程名称实验项目名称实验时间 日期及节次 专业年级姓名验计算机科学与技
  • linux 内核重定位,linux内核netfilter实现url重定向

    include include 34 url redirect h 34 struct sk buff tcp newpack u32 saddr u32 daddr u16 sport u16 dport u32 seq u32 ack
  • can/socket can

    1 概念 参考 xff1a Linux CAN编程详解 can引脚 xff1a cn2 15 xff1a CAN1 H 19 CAN1 L 根据每组报文开头的 11 位标识符 扩展帧为29位标识符 CAN 2 0A 规范 解释数据的含义来决
  • C#不能在匿名方法、lambda表达式、查询表达式或本地函数中使用ref、Out或in参数

    报错信息 Error CS1628 C 不能在匿名方法 lambda表达式 查询表达式或本地函数中使用ref Out或in参数 Error CS1628 Cannot use ref out or in parameter xx insid
  • STL 智能指针

    转自 xff1a https blog csdn net k346k346 article details 81478223 STL一共给我们提供了四种智能指针 xff1a auto ptr unique ptr shared ptr和we
  • 【转】目前最常见的”无线通信(数据)传输技术“有哪些?

    近年来 xff0c 随着电子技术 计算机技术的发展 xff0c 无线通信技术蓬勃发展 xff0c 出现了各种标准的无线数据传输标准 xff0c 它们各有其优缺点和不同的应用场合 xff0c 本文将目前应用的 无线通信种类进行了分析对比 xf
  • 认证 (authentication) 和授权 (authorization) 的区别

    以前一直分不清 authentication 和 authorization xff0c 其实很简单 xff0c 举个例子来说 xff1a 你要登机 xff0c 你需要出示你的 passport 和 ticket xff0c passpor
  • stm32f407VE+enc28j60+lwip2.0.2

    407自带以太网mac模块 xff0c 一般外挂一个PHY芯片就可以实现以太网物理层 xff1b 以下是stm32f407VE 43 enc28j60 43 lwip2 0 2实现最基本的以太网通信功能 1 新建工程 xff0c 此处省略1
  • 关于步进电机的半流设置、衰减设置

    连接 xff1a https zhidao baidu com question 1668040896278315667 html 电流是电机运行的载体 xff0c 但电压的高低也直接影响到电流 xff0c 很多人使用步进电机存在误区 xf
  • 三十二、http与www服务介绍

    一 用户访问百度 xff08 www baidu com xff09 用户访问在url中输入地址后 xff0c 首先会访问本地的缓存和hosts文件 xff0c 如果没有 xff0c 会访问本地DNS xff0c 在就是根域和顶级域名等 x
  • UNIX网络编程卷1 - >环境搭建(ubuntu16.04)

    学习unp网络编程 xff0c 树上的例子均存在 include unp h xff0c 故需要对环境进行配置 1 到资源页下载 www unpbook com 2 解压并将unpv13e移动到相应的文件夹下 因为我是在windows电脑装
  • HTTP认证之基本认证——Basic(二)

    导航 HTTP认证之基本认证 Basic xff08 一 xff09 HTTP认证之基本认证 Basic xff08 二 xff09 HTTP认证之摘要认证 Digest xff08 一 xff09 HTTP认证之摘要认证 Digest x
  • 超声波雾化模块_超声波加湿器让果蔬保持新鲜

    水果和蔬菜的保鲜对于超市和餐饮业来说非常重要 保持蔬菜的新鲜度一直令人头疼 xff0c 因为蔬菜和水果的新鲜度直接影响客户的购买 因此 xff0c 为了有效地延长蔬菜水果的保鲜期 xff0c 喷洒蔬菜水果 xff0c 延长其保鲜期很重要 目
  • Visual Studio 内置宏的查看与使用

    C 43 43 工程 C 43 43 工程是最容易查看宏的 因为很多值的编辑 xff0c 都提供了宏的查看 C 工程 C 的工程 xff0c 不容易查看宏 因为很少提供宏的查看窗口 所以 xff0c 我这里给出总结就有必要了 NET Fra

随机推荐