1. 程式人生 > >Java中字串反轉的七種方法

Java中字串反轉的七種方法

突然在想,確實是浮躁了

字串反轉的七種方法:

線上程式碼:

package test1;

import java.util.Stack;

public class Reverse {
	    //方法一:遞迴+字串擷取;不斷的進行二分擷取,遞迴返回;
		/*
		 * 【時間複雜度:】漸漸跟下去就是n,n/2,n/4,....n/2^k,其中k就是迴圈的次數
						由於你n/2^k取整後>=1
						即令n/2^k=1
						可得k=log2n,(是以2為底,n的對數)
						所以時間複雜度可以表示O()=O(logn)
		 */
	    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);
		 }
		 //方法二:字串拼接
	    /*
	     * 【時間複雜度:】O()=O(n)
	     */
		 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;
		 }
		 //方法三:字串拼接同2,
	    /*
	     * 【時間複雜度:】O()=O(n)
	     */
		 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;
		 }
		//方法四:StringBuffer(s).reverse()
		    /*
		     * 【時間複雜度:】O()=O(n)
		     */ 
		 public static String reverse4(String s) {
		  return new StringBuffer(s).reverse().toString();
		 }
		//方法五:二分交換
		    /*
		     * 【時間複雜度:】O()=O(n)
		     */ 
		 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);
		 }
		//方法六:異或
		    /*
		     * 【時間複雜度:】O()=O(n)
		     */ 
		 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);
		 }
		//方法二:輔助空間棧
		    /*
		     * 【時間複雜度:】O()=O(n)
		     */
		 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;
		 }
		public static void main(String[] args) {
			System.out.println(reverse2("abcdefg"));
		}  
}


相關推薦

Java字串反轉方法

突然在想,確實是浮躁了 字串反轉的七種方法: 線上程式碼: package test1; import java.util.Stack; public class Reverse { //方法一:遞迴+字串擷取;不斷的進行二分擷取,遞迴返回; /*

python 新增字串方法

#使用{}的方法 s1 = 'Hello {}! My name is {}.'.format('World', 'Python貓') print(s1) s2 = 'Hello {0} My name is {1}.'.format('world','Python 貓') print(s2) s3

Java字串split() 的使用方法

在java.lang包中有String.split()方法,返回是一個數組 我在應用中用到一些,給大家總結一下,僅供大家參考: 1、如果用“.”作為分隔的話,必須是如下寫法,String.split("\."),這樣才能正確的分隔開,不能用String.spli

javaString的用法

string類適用於描述字串事物。那麼它就提供了多個方法對字串進行操作 以下是string的七種用法,注意哦,記得要時常去檢視java的API文件,那個裡面也有很詳細的介紹 1,獲取 1.1:字串中包含的字元數,也就是字串的長度。  int length():獲取長度&nbs

Java字串indexof() 的使用方法

  Java中字串中子串的查詢共有四種方法(indexof())    indexOf 方法返回一個整數值,指出 String 物件內子字串的開始位置。如果沒有找到子字串,則返回-1。 如果 star

字串反轉總結】Java方法實現

演算法比較簡單,註釋就能說明問題,直接上程式碼! 方法一:(利用遞迴實現) public static String reverse1(String s) { int length = s.length(); if (length <= 1) retur

Java反轉字串的10方法[Snippets]

在本文中,我們將討論如何以10種不同的方式在Java中反轉String。在本文中,我們將編寫10個Java程式來反轉String。例如,從“javaguides”到“sediugavaj”的反向字串。 用Java反轉字串的10種方法 1.使用+(String Concatenation)運算子

java字串 按照字元挨個換行輸出-兩方法

方案1:將String 字串 轉化為char 陣列 toCharArray public static void main(String[] args) { String s="aaahssjshs222"; // 轉化為字元陣列。 char[] c=s

Java反轉字串的10方法

在這篇文章中,我們會討論10種用Java反轉字串的方法,通過10個Java程式反轉字串。例如,把字串“javaguides” 反轉為 “sediugavaj”。 1. 使用 + (String連線) 操作符 package net.javaguides.corejava.string; /** *

Java去除字串空格的幾方法

1.直接上程式碼 package com.examplezhc.demo; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity

Java實現字串反轉的幾方法

2.最常用的方法: public static String reverse3(String s)  {     char[] array = s.toCharArray(); //將string型別引數轉化為char[]型別引數    String reverse = "";  //注意這是空串,不是nul

javaString的21使用方法

i++ als cas tolower star out clas oid index (構造函數必須new出來) * public String (char[] vaue) 將一個字符數組變成字符串(構造函數) *

Java字串比較方法equals()和equalsIgnoreCase()的區別

1. equals() equals( )是比較兩個字串是否相等,它的一般表示式如下: /** * Compares this string to the specified object. The result is {@code * true} if and o

Java 字串拼接 五方法的效能比較分析 “+”、contact、join、append

一、五種方法分析: 1. 加號 “+” 2. String contact() 方法 3. StringUtils.join() 方法 4. StringBuffer append() 方法 5. StringBuilder append() 方法 二、優劣勢分析 開

Java List轉換為字串的幾方法

Java List轉換為字串的幾種方法 import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; // 參考:https://blog.csdn.net/vasilis_

JAVA執行緒同步的方法(7)彙總

同步的方法: 一、同步方法   即有synchronized關鍵字修飾的方法。 由於java的每個物件都有一個內建鎖,當用此關鍵字修飾方法時, 內建鎖會保護整個方法。在呼叫該方法前,需要獲得內建鎖,否則就處於阻塞狀態。 注: synchronized關鍵字也可以修飾靜態

C 判斷空字串的3方法效能分析【月兒原創】

C#中判斷空字串的3種方法效能分析 作者:清清月兒 主頁:http://blog.csdn.net/21aspnet/           時間:2007.4.28  3種方法分別

C#判斷空字串的3方法效能分析【月兒原創】

                C#中判斷空字串的3種方法效能分析作者:清清月兒  3種方法分別是:string a="";1.if(a=="")2.if(a==String.Empty)3.if(a.Length==0)3種方法都是等效的,那麼究竟那一種方法效能最高呢?本人用實驗說明問題。建立3個aspx頁

C++輸入字串的幾方法

轉自http://gwyan.blog.163.com/blog/static/213337092201361734257744/C++中幾個輸入函式的用法和區別(cin、cin.get()、cin.getline()、getline()、gets()、getchar()))

反轉字串的四方法

1、使用StringBuffer自帶的方法實現 public String reverse1(String str) { if(str == null || str.length()<