【2】原串翻转

题目:

请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
测试样例:
"This is nowcoder"
返回:"redocwon si sihT"

代码实现:

方法一:双指针思想,前后指针所指向的字符交换,直至两指针相遇,交换完毕。

import java.util.*;

public class Reverse {
    public String reverseString(String iniString) {
       if (iniString == null || iniString.length() <= 1){
           return iniString;
       }
       
        int index1 = 0;
        int index2 = iniString.length() - 1;
        char[] arrs = iniString.toCharArray();
        
        while(index1 < index2){
            char temp = arrs[index1];  
            arrs[index1] = arrs[index2];
            arrs[index2] = temp;
            
            index1++;
            index2--;
        }
        
        return new String(arrs);
        
    }
}

方法二:反转即从字符串最后一个字符输出即可。

import java.util.*;

public class Reverse {
    public String reverseString(String iniString) {
       if (iniString == null || iniString.length() <= 1){
           return iniString;
       }
       
        StringBuilder sb = new StringBuilder(5000);
        for (int i = iniString.length() - 1; i >= 0; i--){
            sb.append(iniString.charAt(i));
        }
        
        return sb.toString();
        
    }
}

方法一:双指针思想,前后指针所指向的字符交换,直至两指针相遇,交换完毕。

原文地址:https://www.cnblogs.com/noaman/p/6915797.html