java笔试中字符串翻转的几种方法(java---华为----字符逆序)

来源:互联网 发布:蓝色星球软件 编辑:程序博客网 时间:2024/06/03 15:16

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();    }}


阅读全文
0 0