字符反轉排序

title:Write a function that takes a string as input and returns the string reversed.

Example:
Given s = "hello", return "olleh".

以下的method1是我自己寫的,最low的一種。2,3都是調用系統api實現。


public String reverseString(String s) {
        //METHOD1  11ms
        // StringBuilder sb = new StringBuilder();
        // int len = s.length();
        // String [] arr = new String[len];
        // for(int i = 0; i < len; i++){
        //     int count = i;
        //     arr[i] = s.substring(count,count + 1);
        // }
        
        // for(int j = arr.length - 1; j >= 0; j--){
        //     sb.append(arr[j]);
        // }
        
        // return s = sb.toString();
        
        //METHOD2  5ms
        //  return new StringBuilder(s).reverse().toString();
        
        //METHOD3 5ms
        StringBuilder sb = new StringBuilder();
        char tmpChar ;
        for(int i = s.length() - 1; i >= 0; i-- ){
            tmpChar = s.charAt(i);
            sb.append(tmpChar);
        }
        return sb.toString();
        
    }

然後是別人給出的更優方法:循環只遍歷一半,時間效率就提高上去了。值得學習。

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

最後一種給出了更優的方案:

解釋:pulling you temp variable out of the for loop can reduce the time to 2ms, like my code as follows, because temp is a temporary variable it is unnecessarily declared so many times:

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

從今天開始,每天在忙也要學習一下算法,鞏固基礎。日積月累。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章