Java写一个代码 实现整数反转
时间: 2023-05-25 20:05:55 浏览: 79
以下是实现整数反转的Java代码:
```java
public class ReverseInteger {
public int reverse(int x) {
int result = 0;
while (x != 0) {
int remainder = x % 10;
int newResult = result * 10 + remainder;
// 检查是否溢出
if ((newResult - remainder) / 10 != result) {
return 0;
}
result = newResult;
x /= 10;
}
return result;
}
}
```
注释中已经说明了实现的思路。主要是通过每次取余数和乘10,将原整数反转。在此过程中,需要判断是否会产生溢出。如果最终结果溢出,则返回0。
相关问题
写一个反转链表代码用java
下面是一个反转链表的Java代码实现:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while (curr != null) {
ListNode temp = curr.next;
curr.next = prev;
prev = curr;
curr = temp;
}
return prev;
}
```
在这个代码中,我们定义了一个链表节点ListNode,包含了一个整数值val和一个指向下一个节点的指针next。然后我们定义了一个reverseList()方法,用于反转链表。
在方法中,我们使用了三个指针,分别指向当前节点(curr)、前一个节点(prev)和后一个节点(temp)。我们每次将当前节点的指针指向前一个节点,然后依次移动三个指针即可。最后返回反转后的头节点(即原来的尾节点)。
需要注意的是,在反转链表时,一定要先将当前节点的next指针保存到一个临时变量中,否则在修改指针时会造成链表的断裂。
用java写出:字符串整数相加
以下是Java代码实现字符串整数相加:
```java
public class StringAddition {
public String addStrings(String num1, String num2) {
StringBuilder sb = new StringBuilder();
int carry = 0, i = num1.length() - 1, j = num2.length() - 1;
while (i >= 0 || j >= 0) {
int x = i >= 0 ? num1.charAt(i) - '0' : 0;
int y = j >= 0 ? num2.charAt(j) - '0' : 0;
int sum = x + y + carry;
sb.append(sum % 10);
carry = sum / 10;
i--;
j--;
}
if (carry != 0) {
sb.append(carry);
}
return sb.reverse().toString();
}
}
```
具体实现中,使用StringBuilder来存储结果。同时,使用carry变量记录进位情况,i和j分别从num1和num2的末尾开始遍历,取出对应位置的数字进行相加,再加上进位,得到当前位置的和。将和的个位数加入到StringBuilder中,将和的十位数作为进位carry。如此循环,直到num1和num2中的所有数字都被处理完。最后,如果还有进位carry,将其加入到StringBuilder中。最后,将StringBuilder反转并转成字符串即可。