字符串反转的多种解法

import java.util.Stack;

public class StringReverse {

 

 public static String reverse1(String s) {

  int length = s.length();

  if (length <= 1)

   return s;

  String left = s.substring(0, length / 2);

  String right = s.substring(length / 2, length);

  return reverse1(right) + reverse1(left);

 }

 

 public static String reverse2(String s) {

  int length = s.length();

  String reverse = "";

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

   reverse = s.charAt(i) + reverse;

  return reverse;

 }

 

 public static String reverse3(String s) {

  char[] array = s.toCharArray();

  String reverse = "";

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

   reverse += array[i];

 

  return reverse;

 }

 

 public static String reverse4(String s) {

  return new StringBuffer(s).reverse().toString();

 }

 

 public static String reverse5(String orig) {

  char[] s = orig.toCharArray();

  int n = s.length - 1;

  int halfLength = n / 2;

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

   char temp = s[i];

   s[i] = s[n - i];

   s[n - i] = temp;

  }

  return new String(s);

 }

 

 public static String reverse6(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);

 }

 

 public static String reverse7(String s) {

  char[] str = s.toCharArray();

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

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

   stack.push(str[i]);

 

  String reversed = "";

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

   reversed += stack.pop();

 

  return reversed;

 }

 

}

时间: 2024-11-03 22:17:16

字符串反转的多种解法的相关文章

【js】字符串反转(倒序)的多种处理方式

今天发布一篇关于字符串反转的几种方式(一种问题的解决方案不是只有一种). 方式1: 这种方式比较简单,推荐使用 1 字符串转数组,反转数组,数组转字符串. 2 3 split(""):根据空字符串拆分数组 4 5 reverse():数组反转元素位置 6 7 join(""):数组转回字符串,且不带分隔符 实现效果如图: 方式2: 这种方式相对麻烦 1 定义新的空字符串,遍历str,charAt()是取字符串的一个字符,先去最后一个字符, 2 再取倒数第二个...以

(转)c++字符串反转

//通过不同的方法,实现对所输入字符串的反转,可以很好地复习巩固 C++ 基础知识 /*分析过程: 假设要使传递的字符串为常量const字符串,这样操作更加灵活,可直接传递字符串字面值进行反转,常见的解决方法就是,定义一个新的与传递过来字符串长度 相等的字符数组,然后进行字符串拷贝,把str字符按从左到右放置到字符数组中,然后采用循环来对字符数组中字符反转 */ #include <iostream> #include <string> /*第一种,采用以上思路解法,传递为cons

python学习之巧妙字符串反转

字符串反转是一个最常见的面试题,写法也很多种,下面给2家介绍2种,一种是常规写法,一种是巧妙写法: 题目:完成字符串abcd反转. 方法1:比较容易想到的想法,利用listdef reversestr(string):         strlist=[]          i=len(string)-1          while(i>=0):                  strlist.append(string[i])                   i-=1         

[C/C++] String Reverse 字符串 反转

#include <iostream> #include <string> #include <algorithm> #include <cstring> inline void STL_Reverse(std::string& str) // 反转string字符串 包装STL的reverse() 可以inline { reverse(str.begin(), str.end()); // STL 反转函数 reverse() 的实现 /* tem

Java面试题从零开始:写一个函数把字符串反转

前言:为了能够找一个代表我从零开始的诗词,我挖空心思去找,然而怎么也找不到一个贴合我心意的,被迫上了度娘也不曾找到.真想把小学一年级的语文课本拿出来好好的通读一遍,肯定能找到答案. 好了,既然找不到也不必耿耿于怀了.今天读了<高效能程序员的修炼>第四章,发现自己好烂,如果按照作者的看法,我是无论如何都入不了他的法眼,于是乎,我告诉自己,从零开始,把作者提出的面试题按照Java来写一遍,无论是参考别人还是自己略能想得到的办法,亲自动手把它们敲出来,并且记录下来吧! 写一个函数把字符串反转,作为本

【华为机试练习】字符串反转

题目描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.例如:输入描述:输入N个字符输出描述:输出该字符串反转后的字符串 解法1(C语言版): #include<stdio.h> int main() { char str[1000]; int len, i, j; char temp; gets(str); len = strlen(str); for(i = 0, j = len - 1; i < j; ++i, --j) { temp = str[i]; str[i]

字符串反转方法汇总

split()方法将一个字符串对象的每个字符拆出来,并且将每个字符串当成数组的每个元素 reverse()方法用来改变数组,将数组中的元素倒个序排列,第一个数组元素成为最后一个,最后一个变成第一个 join()方法将数组中的所有元素边接成一个字符串 来看个实例: 1 function reverseString(str) { 2 // 第一步,使用split()方法,返回一个新数组 3 // var splitString = "hello".split("");

字符串反转的进一步应用----单词反转

字符串反转:如给定一字符串 good bye boy. 反转之后: .yob eyb doog 实现思路: 分别从第一个字符和最后一个字符,同时向中间遍历,交换遇到的每一个字符.JAVA实现代码如下:字符数组str存储待反转的字符串. private static void inverse(char[] str, int start, int end){ int i = start; int j = end; while(i < j){ char tmp = str[i]; str[i] = s

leetcoder系列001:c++字符串反转

问题: 给定一个输入字符串,字符串字反向词.例如 s = "the sky is blue",返回 "blue is sky the". 我的答案: class Solution { public: void reverseWords(string &s) { if(s.size() <= 0) return; string pattern = " "; string::size_type pos; vector<string