替换原则:index k 的值和 n-k 的值进行交换。(始终记住程序员的n、k都是字符串的实际位置。)
乘除的最基本实现还是来源于移位操作。
1 public String reverse(String src) { 2 char[] value = src.toCharArray(); 3 int count = value.length; 4 int n = count - 1; 5 for (int j = (n - 1) >> 1; j >= 0; j--) { 6 char tmp = value[j]; 7 char tmp2 = value[n - j]; 8 value[j] = tmp2; 9 value[n - j] = tmp; 10 } 11 return new String(value); 12 }
Java字符串反转有2个已经实现的类函数: StringBuffer、StringBuilder类的函数reverse() 。
其中源码的实现如下,核心的思想是替换原则:
View Code
其中的hasSurrogate与字符编码有关系,这个东东暂时没有研究。