java String 翻转 去重

本文介绍了一道常见的编程面试题目:给定一个正整数,通过翻转并去除重复数字得到一个新的整数。文章提供了一个具体的Java实现案例,并详细展示了如何逐个检查数字字符、使用哈希表进行去重以及最终构建结果字符串的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天面试遇到的问题:


给定一个正整数 例如:123344445, 需要对数字翻转后去除重复, 返回: 54321



public static int reverseAndDeDuplication(Integer num)
{
String str = String.valueOf(num);
StringBuffer sb = new StringBuffer();
Map<Character, Integer> map = new HashMap<>();
for (int i = str.length() - 1; i >=0; i--) {
if(map.get(str.charAt(i)) == null)
{
map.put(str.charAt(i), 1);
sb.append(str.charAt(i));
}
else
{
map.put(str.charAt(i), map.get(str.charAt(i)) + 1);
}
}

return Integer.valueOf(sb.toString());
}

Java 中,数组是一种用于存储固定大小的同类型数据的容器。其使用方法涉及多个方面,包括声明、初始化、操作以及常见应用场景。 ### 声明与初始化 Java 数组可以通过以下方式声明和初始化: ```java int[] arr1 = {1, 2, 3}; // 直接初始化 int[] arr2 = new int[5]; // 动态分配长度为5的数组 ``` 其中,`arr1` 是直接通过元素列表初始化的数组,而 `arr2` 则是动态分配内存并指定长度的方式创建的数组[^2]。 ### 引用传递与修改 Java 的数组变量本质上是一个引用,指向堆内存中实际存储数组内容的地址。当将一个数组赋值给另一个数组时,实际上是复制了引用,两个变量指向同一块内存区域。 ```java int[] arr1 = {1, 2, 3}; int[] arr2 = arr1; // arr1和arr2指向同一内存 arr2[0] = 10; System.out.println(arr1[0]); // 输出10 ``` 因此,对其中一个数组的修改会直接影响到另一个数组[^2]。 ### 操作数组 Java 提供了多种方式来操作数组,例如遍历、排序、查找等。可以利用循环结构进行遍历: ```java for (int i : arr1) { System.out.println(i); } ``` 此外,还可以通过 `java.util.Arrays` 工具类实现更复杂的操作,例如比较、填充、复制和排序: ```java import java.util.Arrays; Arrays.equals(arr1, arr2); // 比较两个数组是否相等 Arrays.fill(arr2, 20); // 将数组填充为特定值 int[] arr3 = Arrays.copyOf(arr1, 10); // 复制数组 Arrays.sort(arr1); // 排序数组 ``` ### 修改数组内容 数组的内容可以在方法中被修改,并且这种修改会反映到原始数组上,因为数组是以引用形式传递的: ```java public static void doubleArray(int[] arr) { for (int i = 0; i < arr.length; i++) { arr[i] *= 2; } } public static void main(String[] args) { int[] nums = {1, 2, 3}; doubleArray(nums); System.out.println(Arrays.toString(nums)); // [2, 4, 6] } ``` ### 常见应用 - **数组翻转**:可以通过交换前后位置的元素来实现数组的反转: ```java public class Array01 { public static void main(String[] args) { int[] arr1 = {11, 22, 33, 44, 55, 66, 77}; int len = arr1.length; for (int i = 0; i <= len / 2 - 1; i++) { int temp = arr1[i]; arr1[i] = arr1[len - 1 - i]; arr1[len - 1 - i] = temp; } for (int i : arr1) { System.out.println(i); } } } ``` 此代码段实现了数组元素的前后交换,从而完成数组的翻转功能[^3]。 - **操作**:如果需要对数组中的元素进行,可以使用 `HashSet` 结合哈希值和 `equals()` 方法来判断元素是否相同: ```java Set<Integer> uniqueElements = new HashSet<>(); for (int num : array) { uniqueElements.add(num); } ``` 这种方法依赖于 `HashSet` 的特性,即不允许复元素存在[^5]。 ### 总结 Java 数组的使用方法涵盖了从基本的声明和初始化到复杂的数据操作(如排序、查找和)。了解这些操作能够帮助开发者高效地处理数据集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值