1. 程式人生 > >leetcode-344-反轉字串(reverse string)-java

leetcode-344-反轉字串(reverse string)-java

題目及測試用例

package pid344;
/*反轉字串

編寫一個函式,其作用是將輸入的字串反轉過來。

示例 1:

輸入: "hello"
輸出: "olleh"

示例 2:

輸入: "A man, a plan, a canal: Panama"
輸出: "amanaP :lanac a ,nalp a ,nam A"




*/


public class main {

    public static void main(String[] args) {
        String [] testTable = {"hello","A man, a plan, a canal: Panama"
,"av12,./34\\45"}; for (String ito : testTable) { test(ito); } } private static void test(String ito) { Solution solution = new Solution(); String rtn; long begin = System.currentTimeMillis(); System.out.print(ito); System.out
.println(); //開始時列印陣列 rtn= solution.reverseString(ito);//執行程式 long end = System.currentTimeMillis(); System.out.println(":rtn" ); System.out.print(rtn); System.out.println(); System.out.println("耗時:" + (end - begin) + "ms"); System.out.println("-------------------"
); } }

解法1(成功,5ms,速度較慢)
建立一個stringbuilder,將string的順序 charAt(i) 插入stringbuilder,最後再轉為字串

package pid344;

import java.util.Arrays;

public class Solution {
public String reverseString(String s) {
        //相當於重寫stringbuilder的reverse方法
        StringBuilder build=new StringBuilder();
        int length=s.length();
        for(int i=0;i<length;i++){
            build.append(s.charAt(length-1-i));
        }        
    return build.toString();
    }



}

解法2(別人的,2ms,很快)
將字串化為char陣列,前後用temp顛倒

public class Solution {
    public String reverseString(String s) {
        int length = s.length();
        char[] str = s.toCharArray();
        for(int i = 0;i < length / 2;i++){
            char temp = str[i];
            str[i] = str[length - 1 - i];
            str[length - 1 - i] = temp;
        }
        return new String(str);
    }
}