62,614
社区成员
发帖
与我相关
我的任务
分享
static String reverse(String str) {
char[] arr = str.toCharArray();
int length = str.length();
for(int i = 0;i < length / 2;++i) {
char temp = arr[i];
arr[i] = arr[length - i - 1];
arr[length - i - 1] = temp;
}
return String.valueOf(arr);
}
推荐7楼方法 最方便快捷
//反转部分字符串
public String reverseString(String s,int start, int end)
{
char[] arr = s.toCharArray();
reverse(arr,start,end);
return new String(arr);
}
//反转整个字符串
public String reverseString(String s)
{
return reverseString(s,0,s.length())
}
public void reverse(char[] arr,int x,int y)
{
for(int start=x,end=y-1; start<=end; start++,end--)
{
swap(arr,strat,end);
}
}
public void swap(char[] arr,int x,int y)
{
char temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
public static void main(String[] args) {
String str = "123456ABCD中国";
char[] dist = new char[str.length()];
for(int x = str.length() - 1, p = 0; x >= 0; x--){
dist[p++] = str.charAt(x);
}
System.out.println(new String(dist));
}
上面有些楼给出的答案中都用到了方法toCharArray,该方法的实现依赖于System.arraycopy,arraycopy虽然是一个本地方法因此有着更高效的实现,但也会消耗时间的吧...要求时间复杂度最低的话,下面是一个时间复杂度为O(1)的解决方法:public char[] toCharArray() { // Cannot use Arrays.copyOf because of class initialization order issues char result[] = new char[value.length]; System.arraycopy(value, 0, result, 0, value.length); return result; }
int i = inputStr.length() - 1; while(i >= 0) // 正在使用反转字符串,Sysetm.out.print是一个用例 System.out.print( inputStr.charAt(i--) );
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
要求时间复杂度最低的话,下面是一个时间复杂度为O(1)的解决方法:
int i = inputStr.length() - 1;
while(i >= 0)
// 正在使用反转字符串,Sysetm.out.print是一个用例
System.out.print( inputStr.charAt(i--) );
/** * 字符串反转 * @return */ public static String reverser(String str){ char[] chars = str.toCharArray(); int end = chars.length - 1; int start = 0; while(end > start){ char tmp = chars[end]; chars[end] = chars[start]; chars[start] = tmp; ++start; --end; } return new String(chars); }
public String getReversalStr(String str){
char[] chs = str.toCharArray();
char temp;
for(int i = 0; i < chs.length >>> 1; i++){
temp = chs[i];
chs[i] = chs[chs.length - i -1];
chs[chs.length - i - 1] = temp;
}
return new String(chs);
}
不谢,时间复杂度为O(n),给分吧。。。
/**
* 字符串反转
* @return
*/
public static String reverser(String str){
char[] chars = str.toCharArray();
int end = chars.length - 1;
int start = 0;
while(end > start){
char tmp = chars[end];
chars[end] = chars[start];
chars[start] = tmp;
++start;
--end;
}
return new String(chars);
}