public void reverse(int[] nums, int l, int h){
while(l<h){
swap(nums, l++, h--);
}
}
字符串反序
public void reverse(char[] s, int i, int j){
while(i<j){
char temp = s[i];
s[i]=s[j];
s[j]=temp;
i++;
j--;
}
}
等同于
StringBuffer(str).reverse();
整数反序
public int reverse(int x) {
if(x == 0)
return x;
long rev = 0;
while(x != 0){
rev = rev * 10 + x % 10;
x = x / 10;
if( rev > Integer.MAX_VALUE || rev < Integer.MIN_VALUE)
return 0;
}
return (int)rev;
}
构造回文 Palindrome
public long createPalindrome(int num){
String value = num + new StringBuilder(Long.toString(num)).reverse().toString();
return Long.parseLong(value);
}
判断回文1
// right = left or right = left + 1
private void extendPalindrome(String s, int left, int right) {
// 判断左右扩展的字符是不是回文
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left--;
right++;
}
if (maxLen < right - left - 1) {
lo = left + 1;
maxLen = right - left - 1;
}
}
判断回文2
private boolean isPalindrome(String s) {
if (s == null || s.length() == 0) return false;
int lo = 0, hi = s.length() - 1;
while (lo < hi) {
if (s.charAt(lo) != s.charAt(hi)) return false;
lo++;
hi--;
}
return true;
}