<7>——Reverse Integer

7、 Reverse Integer

反转整数

将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。

样例

给定 x = 123,返回 321

给定 x = -123,返回 -321

代码:
class Solution
{
public:
	int reverse(int x)
	{
		long y = 0;//long型防止溢出
		while (x)
		{
			y = y * 10 + x % 10;
			x /= 10;
		}
		return (y>INT_MAX||y<INT_MIN)? 0:y;//判断溢出
	}
};
这道题的难点在于判断结果是否溢出。


### 自定义Iterator实现List的反向遍历 要在Java中通过自定义`Iterator`实现`List`的反向遍历,可以创建一个新的类继承`Iterator`接口并重写其方法。以下是详细的说明和代码示例。 #### 实现思路 为了实现反向遍历功能,需要维护一个索引变量用于跟踪当前访问的位置。初始时,该索引应设置为列表最后一个元素之后的一个位置(即`size()`)。每次调用`next()`方法时,将索引减一,并返回对应的元素;当索引小于零时,则表示已经到达起始位置,此时抛出`NoSuchElementException`异常[^1]。 下面是一个完整的解决方案: ```java import java.util.*; public class ReverseIterator<T> implements Iterator<T> { private final List<T> list; private int currentIndex; public ReverseIterator(List<T> list) { this.list = list; this.currentIndex = list.size(); // 初始化指向最后一位后的状态 } @Override public boolean hasNext() { return currentIndex > 0; // 如果还有未处理项则返回true } @Override public T next() { if (!hasNext()) throw new NoSuchElementException(); return list.get(--currentIndex); // 返回前先减少index值 } } // 测试类 class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); System.out.println("原始顺序:"); for (Integer num : numbers) { System.out.print(num + " "); } System.out.println("\n反向顺序:"); ReverseIterator<Integer> reverseIt = new ReverseIterator<>(numbers); while(reverseIt.hasNext()){ System.out.print(reverseIt.next() + " "); } } } ``` 上述程序展示了如何构建自己的`ReverseIterator`类以及它的基本使用方式。注意这里只实现了最基本的功能需求——能够从尾至头读取数据[^2]。 另外需要注意的是,在实际开发过程中如果涉及到并发修改等问题还需要考虑线程安全等因素[^3]。 #### 总结 此方案提供了一种灵活的方式来控制容器内项目的访问次序而无需依赖于特定框架所提供的工具函数如`Collections.reverse()`或者Stream API等高级特性[^4]。它允许开发者更精细地调整行为逻辑以适应不同场景下的特殊要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值