`
dyy_gusi
  • 浏览: 209560 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java反转字符串

    博客分类:
  • Java
阅读更多

       前几天看见一篇文章,说使用Java能用几种方式反转一个字符串。首先要明白什么叫反转字符串,就是将一个字符串到过来啦,比如"倒过来念的是小狗"反转过来就是”狗小是的念来过倒“。接下来就把自己能想到的所有方式记录下来了。

1、第一个念头就是直接使用String类的反转方法,对不起,这样是不行的,因为String类没有这个方法。那么好吧,搞个数组,然后遍历数组,依次调换数组中对应的各个字符。

// 直接使用数组首位调换
public String reverse1(String str) {
    if (str == null || str.length() <= 1) {
        return str;
    }
    char[] array = str.toCharArray();
    char[] reverseArray = new char[array.length];
    for (int i = 0; i < array.length; i++) {
        reverseArray[array.length - 1 - i] = array[i];
    }
    return new String(reverseArray);
}

 

2、除了上面使用的方法,其实我们还可以使用递归迭代的方法,因为如果只有一个字符的时候,反转一个字符就是它本身。

// 巧妙使用递归的方式
public String reverse2(String str) {
    if (str == null || str.length() <= 1) {
        return str;
    }
    return reverse2(str.substring(1)) + str.charAt(0);
}

 

3、String类没有反转字符串这个方法,但是StringBuffer有这个方法,所以可以先将String转换成StringBuffer,然后利用StringBuffer反转,然后再将反转以后StringBuffer转换成String。这一招可能是最方便的。

// 借助其他包含反转方法的类
public String reverse3(String str) {
    if (str == null || str.length() <= 1) {
        return str;
    }
    StringBuffer sb = new StringBuffer(str);
    sb = sb.reverse();
    return sb.toString();
}

 

4、除了使用StringBuffer直接的反转方法,我们还可以借助StringBuffer的其他方法完成

 

//使用StringBuffer的setCharAt方法
public String reverse4(String str) {
    if (str == null || str.length() <= 1) {
        return str;
    }
    StringBuffer sb = new StringBuffer(str);
    for (int i = 0; i < (str.length() / 2); i++) {
        int swapIndex = str.length() - 1 - i;
        char swap = sb.charAt(swapIndex);
        sb.setCharAt(swapIndex, sb.charAt(i));
        sb.setCharAt(i, swap);
    }
    return sb.toString();
}

//使用StringBuffer的append方法
public String reverse4(String str) {
    if (str == null || str.length() <= 1) {
        return str;
    }
    StringBuffer sb = new StringBuffer(str.length());
    for (int i = str.length() - 1; i >= 0; i--) {
        sb.append(str.charAt(i));
    }
    return sb.toString();
}

 

5、再仔细想想,反转字符串的过程,就是一次将字符放入一个队列,然后再倒序的依次拿出来,这个恰好和Java的堆栈Stack很像,先进后出。

public String reverse5(String str) {
    if (str == null || str.length() <= 1) {
        return str;
    }
    String result = "";
    char[] arr = str.toCharArray();
    Stack<Character> stack = new Stack<Character>();
    for (char a : arr) {
        stack.push(a);
    }
    int length = stack.size();
    //注意这个地方必须要先把length暂存起来,因为在遍历的过程中,pop()堆的时候,会改变堆的大小。
    for (int i = 0; i < length; i++) {
        result += stack.pop();
    }
    return result;
}

 

       条条大路通罗马,只要肯思考,肯尝试,我们最终总能找到一中或者多种方式达到我们的目的。希望以后自己在编程的道路上,能够发散思维,寻找到解决各种问题的方法。

1
2
分享到:
评论

相关推荐

    (Java)反转字符串单词,但不改变标点符号的位置

    以上就是解决"Java反转字符串单词但不改变标点符号位置"问题的方法。通过这种方法,我们可以有效地处理各种复杂的字符串输入,同时保持了标点符号的原始顺序。在实际编程中,这样的字符串处理技巧对于提高代码的...

    Java反转字符串的10种方法

    Java反转字符串的10种方法 Java反转字符串是Java编程语言中的一种常见操作,目的是将字符串颠倒顺序,例如将字符串“javaguides”反转为“sediugavaj”。本文将介绍十种不同的Java反转字符串方法,旨在提供给大家...

    Java 反转字符串的 10 种方法

    在这篇文章中,我们会讨论10种用Java反转字符串的方法,通过10个Java程序反转字符串。例如,把字符串“javaguides” 反转为 “sediugavaj”。 1. 使用 + (String连接) 操作符 package ...

    96.java字符串反转案例.zip

    96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip...

    Java反转字符串和相关字符编码的问题解决

    这种情况下,简单地反转字符串可能会导致字符显示错误,因为高位代理和低位代理的顺序被打乱了。 为了解决这个问题,需要在反转字符串时进行特殊处理,确保所有的代理对都正确反转。例如,在StringBuffer类的源码中...

    java递归字符串反转

    网上绝大部分java递归实现字符串反转缺少字符串判空条件,我加了上去。

    JAVA课程设计(论文) 反转字符串

    反转字符串是Java编程中一个基础但重要的练习,它旨在帮助学生掌握基本的字符串操作和算法设计。这篇课程设计论文的主题围绕着如何在Java中实现字符串反转功能,这涉及到以下几个核心知识点: 1. **字符串基础知识*...

    java代码-使用java解决反转字符串的源代码

    java代码-使用java解决反转字符串的源代码 ——学习参考资料:仅用于个人学习使用!

    java字符串反转

    java反转类:可以将数组内容反转排,点击复制反转字符串,Container contentPane = getContentPane(); contentPane.add(buttonPanel, BorderLayout.SOUTH);

    将输入的字符串反转 java

    Java 8引入的流API提供了一种简洁的反转字符串的方法,通过映射每个字符到它自身并收集回字符串。 ```java public class StringReverse { public static void main(String[] args) { String input = "将输入的...

    java 用递归实现字符串反转

    ### Java使用递归实现字符串反转 在Java编程语言中,递归是一种常用的方法来解决许多问题,特别是那些可以通过分解成更小子问题来解决的问题。本文将详细介绍如何使用递归来实现字符串的反转。 #### 一、递归基础...

    Java字符、字符串、数组操作实例.rar

    Java字符、字符串、数组操作实例,主要是数组的复制、反转字符串中的字符、命令行参数、求字符串的长度及每一个位置上的字符、数组的排序、String类数组的操作等方面的例子,相信对初学者学习Java有帮助的。

    Java 程序使用堆栈反转字符串.docx

    在 Java 编程中,反转字符串是一个常见的任务,可以使用多种方法实现,其中包括使用堆栈。堆栈是一种后进先出(LIFO)的数据结构,它允许我们在一端(称为顶部)添加和删除元素。在本例中,我们将探讨如何使用堆栈来...

    java-leetcode题解之第557题反转字符串中的单词III.zip

    标题中的“java-leetcode题解之第557题反转字符串中的单词III”指的是一个关于Java编程语言在LeetCode平台上解决第557题的题目。LeetCode是一个在线的编程练习平台,它提供了各种算法问题供程序员进行练习,提升编程...

    java 字符串反转

    在Java编程语言中,字符串(String)...通过这种方式,我们不仅理解了如何在Java中反转字符串,还学会了如何扩展这些方法以处理多个字符串。这在实际开发中非常有用,特别是在需要处理大量文本数据或字符串操作的场景下。

    java字符反转代码

    - **字符串反转**:通过 `StringBuffer` 的 `append()` 方法将字符逐个加入,并且是从字符串的末尾向前遍历,最终得到反转后的字符串。 ### 五、总结 此Java程序通过使用Swing组件实现了字符反转功能,并且具备简单...

    java 倒置字符串

    `StringBuilder`和`StringBuffer`类提供了在内存中操作字符串的方法,包括反转字符串。它们之间的主要区别在于多线程环境下的性能:`StringBuffer`是线程安全的,而`StringBuilder`不是。对于单线程环境,`...

    java-leetcode面试题解双指针之第344题反转字符串.zip

    第344题是关于反转字符串的,这是一个基础但重要的题目,它考察了对字符数组的操作和理解。 首先,我们要明确什么是双指针。在编程中,双指针通常指的是在处理数组或字符串时使用的两个指针,它们分别从数组或字符...

    java字符串操作大全

    ##### (8) 反转字符串:`reverse()` 此方法反转`StringBuffer`对象中的字符顺序。 ```java sb.reverse(); ``` 以上是Java字符串操作的基础知识,掌握这些知识点将有助于编写高效、易于维护的Java程序。

Global site tag (gtag.js) - Google Analytics