Reverse Entry
先跟reverse string一样,整个反转,然后因为要找的是tag符号:所以当找到这个符号的时候,开始反转tag,但是要主要连续;的情况,所以找:和&之间的
public class reverseString {
//inplace
public static String reverse1(String s){
if(s == null || s.length() == 0) return s;
char[] arr= s.toCharArray();
reverse(arr, 0, s.length() - 1);
for(int i = 0; i < arr.length; i++){
if(arr[i] == ';'){
int j = i + 1;
while(j < arr.length && arr[j] != '&'){
if(arr[j] == ';') {
i = j;
}
j++;
}
if(j != arr.length){
reverse(arr, i, j);
}
i = j;
}
}
return new String(arr);
}
public static void reverse(char[] s, int start, int end){
while( start < end){
char tmp = s[start];
s[start++] = s[end];
s[end--] = tmp;
}
}