首先要先介绍一下如何将两个字母,不借助额外的空间做到交换。
如下所示,提供两种方式:
private static void swap1(char a,char b){ System.out.println("a is: "+a); System.out.println("b is: "+b); a=(char) (a+b); b=(char) (a-b); a=(char) (a-b); System.out.println("a is: "+a); System.out.println("b is: "+b); } private static void swap2(char a,char b){ System.out.println("a is: "+a); System.out.println("b is: "+b); a=(char) (a^b); b=(char) (a^b); a=(char) (a^b); System.out.println("a is: "+a); System.out.println("b is: "+b); }
接下来看看其中反转字符串的方法:
//第一种巧妙地使用递归 private static String reverse1(String str){ int length=str.length(); if(length<=1) return str; String left=str.substring(0, length/2); String right=str.substring(length/2,length); return reverse1(right)+reverse1(left); } // 第二种将字符向前插入 private static String reverse2(String str){ int length=str.length(); String reverse=""; for(int i=0;i<length;i++){ reverse=str.charAt(i)+reverse; } return reverse; } private static String reverse22(String str){ int length=str.length(); StringBuilder reverse=new StringBuilder(); for(int i=0;i<length;i++){ //每次在0位置插入,StringBuilder中的元素会自动后移?? reverse.insert(0, str.charAt(i)); } return reverse.toString(); } //第三种从后到前添加字符 private static String reverse3(String str){ int length=str.length(); String reverse=""; for(int i=length-1;i>=0;i--){ reverse=reverse+str.charAt(i); } return reverse; } private static String reverse33(String str){ int length=str.length(); StringBuilder reverse=new StringBuilder(); for(int i=length-1;i>=0;i--){ reverse.append( str.charAt(i)); } return reverse.toString(); } //毫无创意 private static String reverse4(String str){ StringBuilder stringBuilder=new StringBuilder(str); return stringBuilder.reverse().toString(); } //第五种:一分为二,左右互换 private static String reverse5(String str){ char temp; int length=str.length(); char[] array=str.toCharArray(); for(int i=0;i<(length-1)/2;i++){ temp=array[i]; array[i]=array[length-1-i]; array[length-1-i]=temp; } return new String(array); } //第六种,使用util包中的Stack private static String reverse6(String str){ char[] array=str.toCharArray(); Stack<Character> stack=new Stack<Character>(); for(int i=0;i<str.length();i++){ stack.push(array[i]); } String reverse=""; for(int i=0;i<str.length();i++){ reverse=reverse+stack.pop(); } return reverse; } //第七种,从两头开始互换,向中间推进 public static String reverse7(String s) { char[] str = s.toCharArray(); int begin = 0; int end = s.length() - 1; while (begin < end) { str[begin] = (char) (str[begin] ^ str[end]); str[end] = (char) (str[begin] ^ str[end]); str[begin] = (char) (str[end] ^ str[begin]); begin++; end--; } return new String(str); }
相关推荐
在编程领域,字符串反转是一个常见的操作,特别是在处理文本数据时。这个任务的目的是将一个给定的字符串中的字符顺序颠倒,例如将"abcdef"反转为"fedcba"。这在各种情境下都有应用,比如数据处理、文本分析或者简单...
字符串反转的基本思想是从字符串的最后一个字符开始,依次向前获取每个字符,直到获取到第一个字符为止。如果使用递归来实现这个过程,那么可以定义一个递归函数,该函数接受一个字符串作为输入,并返回一个新的反转...
在C# .NET编程环境中,字符串反转是一个常见的操作,它涉及到对字符串中字符顺序的逆序处理。在本文中,我们将深入探讨如何在C#中实现字符串反转,并通过实例代码来展示这一过程。 首先,我们需要了解C#中的字符串...
在C#中,`Array.Reverse`方法提供了一种简单直接的字符串反转方式。该方法实际上针对数组操作,将数组中的元素顺序进行反转。在字符串反转场景下,首先将字符串转换成字符数组,然后应用`Array.Reverse`,最后再将...
字符串反转指的是将字符串中字符的顺序颠倒过来。例如,将 "abcde" 反转后为 "edcba"。解决此问题,一般采用双指针法,分别指向字符串的首尾,然后交换两端的字符,逐步向中间靠拢直到指针相遇或交错。 2. 字符串...
本项目通过并发服务器实现了一个功能:字符串反转。接下来我们将详细探讨这一主题。 首先,我们要了解什么是服务器和客户端。在分布式系统中,服务器通常是指提供服务的一方,而客户端则是请求服务的一方。服务器端...
- 通过遍历字符串中的每个字符(从最后一个字符到第一个字符),并依次输出,实现字符串反转。 5. **完整示例代码**: ```java public class Test { public static void main(String[] args) { BufferedReader...
本文将详细讲解如何使用堆栈来实现一个可以处理中文和英文混合的字符串反转函数。 首先,我们需要了解堆栈(Stack)这种数据结构。堆栈是一种后进先出(LIFO, Last In First Out)的数据结构,就像我们平时使用的...
以下是一个简单的字符串反转示例: ```java public String reverseSingleString(String str) { StringBuilder sb = new StringBuilder(str); return sb.reverse().toString(); } ``` 上述代码首先创建一个`...
在编程面试中,字符串反转是一个常见的测试点,考察应聘者的编程思维和基础功底。 "ZIFUCHUAN"这个文件名可能是某种编码或者谜题,也可能代表了实现字符串反转的一种独特方式。由于没有具体的代码可供分析,我们...
本文将深入探讨如何在C++中实现字符串反转,并提供一个实际的示例源码进行讲解。 首先,C++标准库提供了`<string>`头文件,其中包含`std::string`类,该类提供了一系列方便的方法来操作字符串,包括反转。使用`std:...
在处理字符串反转时,通常需要从两端开始操作,因此可以使用双指针技术,一个从前往后,另一个从后往前。 3. **字符串反转方法**: - **栈数据结构**:可以利用栈的“后进先出”特性,将字符串逐个字符压入栈中,...
根据提供的文件信息,我们可以从中提炼出与字符串反转相关的知识点,具体包括以下方面: ...通过这些方法的学习,我们可以更好地理解和掌握字符串反转的多种实现方式,并能够在实际开发中灵活运用。
在C/C++编程中,字符串反转是一个常见的操作,特别是在数据结构和算法的练习中。这里我们将探讨如何在不使用系统内置函数(如`strrev`或`std::reverse`)的情况下,实现字符串的反转。 首先,我们需要理解字符串在...
根据提供的文件名`str_reverse.cpp`,我们可以推测这是一个C++源代码文件,它实现了上述的字符串反转功能。在C++中,字符串通常由`std::string`类型表示。我们可以定义一个函数,接收一个`std::string`类型的参数,...
在处理字符串时,Python提供了多种操作,其中就包括字符串反转。在本文中,我们将深入探讨Python中用于反转字符串的两种主要方法:使用切片操作和利用`reversed()`函数。 首先,让我们了解Python中的字符串。字符串...
2. **递归法**:通过递归调用来实现字符串反转,每次将第一个字符移到末尾,然后对剩余部分进行同样的操作。 3. **栈操作**:利用栈的后进先出(LIFO)特性,将字符串逐个字符入栈,再依次出栈得到反转的字符串。 ...
在Java编程中,字符串反转是一个常见的操作,可以用于多种应用场景,如数据处理、算法实现等。本教程将深入探讨如何利用压栈出栈的方法来实现字符串的反转,并提供详细的源代码解析。这种方法基于数据结构中的栈...
字符串反转是编程中一个常见的练习题,尤其在面试中常用来考察应聘者的基本编程技能和对语言的理解。Python作为一种简洁明了的编程语言,提供了多种方法来实现字符串的反转。在提供的信息中,列举了16种使用Python...