java查找重复数字 java查找相同字符串
正如本文所述,本文将详细介绍如何使用Java编写一个方法,用于查找内存阵列中首尾数字相同的数字。我们将深入探讨如何将整数转换为字符串进行比较,并提供完整的代码示例和注意事项,帮助读者理解和应用该方法。
方法实现
以下是如何实现该功能的Java代码:import java.util.ArrayList;import java.util.List;public class FindSameFirstLastDigit { public int[] findDuplicates(int[] a) { Listlt;Integergt; result = new ArrayListlt;gt;(); boolean[]numbersThatHaveBeenAdded = new boolean[a.length]; for (int i = 0; i lt; a.length; i ) { for (int j = i 1; j lt; a.length; j ) { String iNumber = String.valueOf(a[i]); String jNumber = String.valueOf(a[j]); if (iNumber.charAt(0) == jNumber.charAt(0) amp;amp; iNumber.charAt(iNumber.length() - 1) == jNumber.charAt(jNumber.length() - 1)) { 如果(!numbersThatHaveBeenAdded[i]) { result.add(a[i]); numbersThatHaveBeenAdded[i] = true; } if (!numbersThatHaveBeenAdded[j]) { result.add(a[j]); numbersThatHaveBeenAdded[j] = true; } } } } return result.stream() .mapToInt(Integer::intValue) .toArray(); } public static void main(String[] args) { FindSameFirstLastDigit finder = new FindSameFirstLastDigit(); int[] inputArray = {121, 232, 12, 34, 55, 101, 202, 1, 11}; int[] resultArray = finder.findDuplicates(inputArray);
System.out.print(quot;首尾相同的数字: quot;); for (int num : resultArray) { System.out.print(num quot; quot;); } System.out.println(); // 输出: 首尾相同的数字: 121 232 101 202 11 }}登录后复制
代码解释:
findDuplicates(int[] a) 方法:该方法接收一个整数数组a作为输入。
立即学习“Java学习笔记(深入)”;
Listlt;Integergt; result = new ArrayListlt;gt;();:创建一个免费的ArrayList来存储结果,即首尾数字相同的数字。
boolean[]numbersThatHaveBeenAdded = new boolean[a.length];: 创建一个布尔备份,用于记录哪些数字已被添加到结果列表中,避免重复添加。
外层循环 for (int i = 0; i lt; a.length; i ) 和内层循环 for (int j = i 1; j lt; a.length; j ):使用修复循环恢复阵列中的所有数字对。内层循环从 i 1开始,避免重复比较相同的数字对,并减少比较次数。
String iNumber = String.valueOf(a[i]);和 String jNumber = String.valueOf(a[j]);:将整数转换为字符串,以便比较首尾字符。
if (iNumber.charAt(0) == jNumber.charAt(0) amp;amp; iNumber.charAt(iNumber.length() - 1) == jNumber.charAt(jNumber.length() - 1)):检查两个数字的首字符和尾字符是否相同。 iNumber.charAt(0) 获取第一个数字的第一个字符,iNumber.charAt(iNumber.length() - 1) 获取第一个数字的最后一个字符。
if (!numbersThatHaveBeenAdded[i]) 和 if (!numbersThatHaveBeenAdded[j]):检查当前数字是否已经被添加到结果列表中。如果尚未添加,则将其添加到结果列表中,然后NumbersThatHaveBeenAdded 阵列中应答的索引设置为 true。
return result.stream().mapToInt(Integer::intValue).toArray();:将 ArrayList 转换为 int[] 阵列并返回。使用 Java 8 的 Stream API 进行转换。
注意事项类型转换:将整数转换为字符串是关键步骤,这样才能地访问和比较数字的首尾字符。避免重复:使用numbersThatHaveBeenAdded可以有效地避免将相同的数字重复添加到结果列表中。性能优化考虑:对于大型集群,可以高效使用更更的数据结构或算法来提高性能。例如,可以使用HashMap来存储每个数字的首尾数字组合,从而比较减少次数。错误处理:在实际应用中,应考虑输入队列为空或包含无效数据的情况,并进行适当的错误处理。总结
本文提供了使用 Java 的方法查找阵列中首尾数字相同的数字的方法。该方法通过将整数转换为字符串,并比较字符串的首尾字符来实现。通过使用布尔备份,可以有效地避免重复添加数字。希望本教程能够帮助读者理解该方法,并在实际开发中得到帮助。
以上就是查找首尾数字相关的数字:Java教程的详细内容,更多请关注乐常识网其他文章!