java String字符串排序

1.调用reversel()方法实现翻转

 

public static String reversel1(String str){

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

}


通过new一个新的StringBuffer调用自带方法

 

 

2.通过字符串数组实现从尾部开始逐个逆序放入字符串中

 

public static String reverse2(String s)

{

char[] array = s.toCharArray(); //String转字符数组

String reverse = ""; //注意这是空串,不是null

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

reverse += array[i];

// 即String="reverse",

// 放入时会"r";"e";"v";"e";"r";"s";"e";的放入String.charAt(String.charAt(length--))

}

return reverse;

}

 


 

3.通过字符串数组实现从头部开始逐个正序放入字符串中

 

public static String reverse3(String s)

{

int length = s.length();

String reverse = ""; //注意这是空串,不是null

 

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

reverse = s.charAt(i) + reverse;//在字符串前面连接, 而非常见的后面

//即String="reverse",

// 放入时会"e";"s";"r";"e";"v";"e";"r";的放入String。charAt(i++)

//从尾到头正序放入

}

return reverse;

}

 


 

 

4.C语言中常用的方法:

 

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); //知道 char数组和String相互转化

}


 

以上四种转自

http://blog.sina.com.cn/s/blog_a5ef63c701013dw8.html

 

 

5.利用栈的先入后出的特性实现字符串的逆转

 

public static String reverse5(String string) {

StringBuffer sb = new StringBuffer();

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

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

s.add(string.charAt(i));

}

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

sb.append(s.pop());

}

return sb.toString();

}


 

 

6.通过二位进制的右移,也就是/2,实现。与方法4异曲同工

 

public static String reverse6(String string) {

StringBuffer sb = new StringBuffer(string);

for (int i = 0, j = sb.length() - 1; i < sb.length() >>> 1; i++, j--) {

char temp = sb.charAt(i);

sb.setCharAt(i, sb.charAt(j));

sb.setCharAt(j, temp);

}

return sb.toString();

}

 

以上两种转自

 

http://blog.csdn.net/hhxin635612026/article/details/26944053

 

 

import java.util.Scanner;

import java.util.Stack;

 

 

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

while(sc.hasNext()){

String str = sc.nextLine();

//逆序翻转

System.out.println(reverse1(str));

 

}

}

public static String reverse1(String str){

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

}

public static String reverse2(String s)

{

char[] array = s.toCharArray(); //String转字符数组

String reverse = ""; //注意这是空串,不是null

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

reverse += array[i];

// 即String="reverse",

// 放入时会"r";"e";"v";"e";"r";"s";"e";的放入String.charAt(String.charAt(length--))

}

return reverse;

}

public static String reverse3(String s)

{

int length = s.length();

String reverse = ""; //注意这是空串,不是null

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

reverse = s.charAt(i) + reverse;//在字符串前面连接, 而非常见的后面

//即String="reverse",

// 放入时会"e";"s";"r";"e";"v";"e";"r";的放入String。charAt(i++)

//从尾到头正序放入

}

return reverse;

}

 

public static String reverse4(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); //知道 char数组和String相互转化

}

public static String reverse5(String string) {

StringBuffer sb = new StringBuffer();

Stack<Character> s = new Stack<Character>(); //new一个栈

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

s.add(string.charAt(i));

//往栈中逐个正序放入字符型string.charAt(i++);

}

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

sb.append(s.pop());

//栈取出的顺序与放入的顺序相反,所以实现逆序

 

//length=string.length();

// 逐个增加string.charAt(length--);

}

return sb.toString();

}

public static String reverse6(String string) {

StringBuffer sb = new StringBuffer(string);

for (int i = 0, j = sb.length() - 1; i < sb.length() >>> 1; i++, j--) {

char temp = sb.charAt(i);

sb.setCharAt(i, sb.charAt(j));

sb.setCharAt(j, temp);

}

return sb.toString();

}

 

public static String reverse7(String string) {

StringBuffer sb = new StringBuffer();

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

sb.append(string.charAt(i));

}

return sb.toString();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值