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);
}
從今天開始,每天在忙也要學習一下算法,鞏固基礎。日積月累。