广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JAVA多种方法实现字符串反转
  • 263
分享到

JAVA多种方法实现字符串反转

2024-04-02 19:04:59 263人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本人自己思考+网络搜罗,分类整理了以下4类9种方法: A类:使用JAVA原生方法 -A1:使用StringBuffer的reverse方法 -A2:使用StringBuilder的r

本人自己思考+网络搜罗,分类整理了以下4类9种方法:

A类:使用JAVA原生方法

-A1:使用StringBuffer的reverse方法

-A2:使用StringBuilder的reverse方法

B类:遍历字符串(字符数组)实现

-B1:将字符串转变为字符数组,遍历该数组的一半,依次将头尾开始对应的字符交换

-B2:逆向遍历s,正序拼接出一个新的字符串

-B3:正向遍历s,将取出的字符拼接形成中间字符串,将中间字符串拼接在下一个字符的后面

-B4:从首位两边同时遍历,交换首位下标位置的字符(类似于B1)

C类:递归实现

-C1:将字符串二分后前后交换,递归结束条件为字符串长度小于等于1

-C2:思路同B3,结束条件是长度为1

D类:其他实现

-D1:利用栈stack先进后出的原理实现

有些方法有重复和相似的地方,以后如果搜集到不太相同的思路和解法,该帖我还会继续维护~欢迎收藏。如果各位有新的思路也欢迎交流,如果本人有写错的地方也欢迎指出。

最后补上代码和测试

package cn.daycode.LeetCode;
 
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Stack;
 
public class Reverses {
    public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
        Method[] methods = Reverses.class.getDeclaredMethods();
        String s1 = "thgir";
        String s2 = "aabbcc";
        int i = 1;
        System.out.println("测试字符串为:"+s1+","+s2);
        // 反射取出Reverses类中所有名字带reverse的方法,并依次调用
        for (Method m : methods){
            if (m.getName().contains("reverse")){
                System.out.print(i+++".");
                System.out.print("调用了"+m.getName()+"方法,");
                System.out.print("逆序后的结果为:"+m.invoke(new Reverses(),s1));
                System.out.println(","+m.invoke(new Reverses(),s2));
            }
        }
    }
 
    // 方法A1:使用StringBuffer的reverse方法
    private static String reverseA1(String s){
        return new StringBuffer(s).reverse().toString();
    }
 
    // 方法A2:使用StringBuilder的reverse方法
    private static String reverseA2(String s){
        return new StringBuilder(s).reverse().toString();
    }
 
    // 方法B1:将字符串转变为字符数组,遍历数组的一半,将头尾开始对应的字符交换
    private static String reverseB1(String s){
        char[] chars = s.toCharArray();
        int length = chars.length-1;
 
        for (int i = 0; i <= length/2; i++) {
            if(chars[i] != chars[length - i]) {
                chars[i] = (char) (chars[i] ^ chars[length - i]);
                chars[length - i] = (char) (chars[i] ^ chars[length - i]);
                chars[i] = (char) (chars[i] ^ chars[length - i]);
            }
        }
 
        return String.valueOf(chars);
    }
 
    // 方法B2:逆向遍历s,正序拼接出一个新的字符串
    private static String reverseB2(String s){
        StringBuffer sb = new StringBuffer("");
 
        for (int i = s.length()-1; i >= 0 ; i--) {
            sb.append(s.charAt(i));
        }
 
        return sb.toString();
    }
 
    // 方法B3:正向遍历s,将取出的字符拼接形成中间字符串,将中间字符串拼接在下一个字符的后面
    private static String reverseB3(String s){
        String str = "";
 
        for (int i = 0; i < s.length() ; i++) {
            str = s.charAt(i) + str;
        }
 
        return str;
    }
 
    // 方法C1:递归,将字符串二分后前后交换,递归结束条件为字符串长度小于等于1
    private static String reverseC1(String s){
        if(s.length() <= 1){
            return s;
        }
        String l = s.substring(0, s.length()/2);
        String r = s.substring(s.length()/2, s.length());
        return reverseC1(r)+reverseC1(l);
    }
 
    // 方法C2:递归,思路同B3,结束条件是长度为1
    private static String reverseC2(String s){
        if (s.length() <= 1){
            return s;
        }
        return  reverseC2(s.substring(1))+s.charAt(0);
    }
 
    // 方法D1:利用栈stack先进后出的原理实现
    private static String reverseD1(String s){
        char[] str = s.toCharArray();
        Stack<Character> stack = new Stack<Character>();
        for (int i = 0; i < str.length; i++)
            stack.push(str[i]);
 
        StringBuffer sb = new StringBuffer("");
        for (int i = 0; i < str.length; i++)
            sb.append(stack.pop());
 
        return sb.toString();
    }
 
    // 方法B4:从首位两边同时遍历,交换首位下标位置的字符
    private static String reverseB4(String s){
        char[] chars = s.toCharArray();
        int start = 0;
        int end = chars.length-1;
 
        while (start < end){
            if(chars[start] != chars[end]) {
                chars[start] = (char) (chars[start] ^ chars[end]);
                chars[end] = (char) (chars[start] ^ chars[end]);
                chars[start] = (char) (chars[start] ^ chars[end]);
            }
            start++;
            end--;
        }
 
        return String.valueOf(chars);
    }
 
}

到此这篇关于JAVA多种方法实现字符串反转的文章就介绍到这了,更多相关JAVA字符串反转内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JAVA多种方法实现字符串反转

本文链接: https://www.lsjlt.com/news/162034.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JAVA多种方法实现字符串反转
    本人自己思考+网络搜罗,分类整理了以下4类9种方法: A类:使用JAVA原生方法 -A1:使用StringBuffer的reverse方法 -A2:使用StringBuilder的r...
    99+
    2022-11-12
  • java字符串反转的7种方法
    目录1、用stringBuffer或者stringBuilder自带的reverse方法2、将字符串拆分为char数组3、stringBuffer倒序拼接4、利用栈的先进后出5、二分...
    99+
    2022-11-13
  • Python实现字符串反转的6种方法
    1.使用字符串切片 >>> s = "python">>> s[::-1]'nohtyp'>>> 2.使用列表的reverse方法 >>> s = "python">>> lst = list(s)>...
    99+
    2023-09-25
    python 开发语言
  • Python中五种实现字符串反转的方法
    目录前言方法1方法2方法3方法4方法5前言 一道题目是实现一个反转字符串的函数,具体如下: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给...
    99+
    2022-11-11
  • Java实现字符串反转
    第一种: public class Main { public static void main(String[] args) { String s1 = ...
    99+
    2022-11-13
  • C++字符串反转的几种方法
    通过不同的方法,实现对所输入字符串的反转,可以很好地复习巩固 C++ 基础知识 //直接使用字符数组赋值 char* strrev1(const char* str) { ...
    99+
    2022-11-12
  • 在Java中反转字符串的10种方法[Snippets]
    在本文中,我们将讨论如何以10种不同的方式在Java中反转String。在本文中,我们将编写10个Java程序来反转String。例如,从“javaguides”到“sediugavaj”的反向字符串。用Java反转字符串的10种方法1.使...
    99+
    2023-06-02
  • C++ 字符串的反转五种方法实例
    复制代码 代码如下://通过不同的方法,实现对所输入字符串的反转,可以很好地复习巩固 C++ 基础知识//直接使用字符数组赋值char* strrev1(const char* st...
    99+
    2022-11-15
    C++ 字符串 反转
  • PHP实现字符串反转的方法
    小编给大家分享一下PHP实现字符串反转的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP实现字符串反转的方法:1、通过php自带的strrev函数实现反转...
    99+
    2023-06-08
  • python方法如何实现字符串反转
    目录python方法实现字符串反转方法一:反转列表法方法二:循环反向迭代法方法三:反向循环迭代法方法四:倒序切片法方法五:遍历索引法方法六:列表弹出法方法七:列表解析式法方法八:反向...
    99+
    2023-01-31
    python字符串反转 python字符串 python反转字符串
  • java如何实现字符串反转
    Java中可以使用StringBuilder或StringBuffer类的reverse()方法来实现字符串反转。 以下是...
    99+
    2023-10-22
    java
  • java 分割字符串(多种方法)
    [toc] 1、String#split 可以根据给定的分隔符或正则表达式将一个字符串分割成多个部分 // 使用正则表达式 "(...
    99+
    2023-08-31
    java Powered by 金山文档
  • java字符串反转的方法是什么
    Java中字符串反转的方法有以下几种: 使用 StringBuilder 或 StringBuffer 的 reverse...
    99+
    2023-10-23
    java
  • java字符串反转的方法有哪些
    这篇文章主要介绍了java字符串反转的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、用stringBuffer或者stringBuilder自带的reverse...
    99+
    2023-06-29
  • Shell中实现字符串反转方法分享
    在做关键词清洗过程中,需要将一类不符合某个字结尾的词过滤出来,思路是把这一批词按最后一个字排序,于是想到了先把这些词反转一下,如把12345转为54321,好像以前在夜息的文章里看过用shell可以实现,就...
    99+
    2022-06-04
    字符串 方法 Shell
  • Python字符串反转实现的方法有哪些
    这篇文章主要介绍“Python字符串反转实现的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python字符串反转实现的方法有哪些”文章能帮助大家解决问题...
    99+
    2022-10-19
  • python反转(逆序)字符串的6种方法详细
    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python中对于字符串的逆...
    99+
    2022-11-12
  • JavaScript将字符串反转的方法
    小编给大家分享一下JavaScript将字符串反转的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript反转字符串的方法:首先使用split()...
    99+
    2023-06-14
  • Java字符串中指定部分反转的三种方式
    目录方式一:把字符串转化为char[]方式二:使用String的拼接方式三:使用StringBuffer/StringBuilder替换String附实战例子总结将“as...
    99+
    2022-11-12
  • Python中实现字符串反转的方法有哪些
    今天小编给大家分享一下Python中实现字符串反转的方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言一道题目是实...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作