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
java中String的七種用法
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
java中String的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()<