题目:
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个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(); } }
方法一:双指针思想,前后指针所指向的字符交换,直至两指针相遇,交换完毕。