反转链表:
输入一个链表,反转链表后,输出新链表的表头。
输入:{1,2,3} 输出:{3,2,1}
public ListNode ReverseList(ListNode head) {
ListNode curr = head;
ListNode prev = null;
while(null != curr){
ListNode temp = curr.next;
curr.next = prev;
prev = curr;
curr = temp;
}
return prev;
}
反转字符串/数组:
接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
输入"abcd" 输出 "dcba"
/**
* 反转字符串
* @param str string字符串
* @return string字符串
*/
public String solve (String str) {
// write code here
char[] chars = str.toCharArray();
int start = 0;
int end = chars.length - 1;
while(start<end){
char temp = chars[start];
chars[start] = chars[end];
chars[end] = temp;
start++;
end--;
}
return new String(chars);
}
反转数字:
将给出的32位整数x翻转。例1:x=123,返回321例2:x=-123,返回-321
你有注意到翻转后的整数可能溢出吗?因为给出的是32位整数,则其数值范围为[−2^{31}, 2^{31} − 1][−231,231−1]。翻转可能会导致溢出,如果反转后的结果会溢出就返回 0。
/**
*
* @param x int整型
* @return int整型
*/
public int reverse (int x) {
// write code here
int result = 0;
while(0 != x){
int num = x % 10;
result = result * 10 + num;
if(result > Integer.MAX_VALUE || result< Integer.MIN_VALUE){
return 0;
}
x = x / 10;
}
return result;
}