根据一个面试题目编写:请实现一个函数:最长顺子;输入很多个整数(1<=数值<=13),返回其中可能组成的最长的一个顺子(顺子中数的个数代表顺的长度); 其中数字1也可以代表14; 顺子包括单顺\双顺\3顺;单顺的定义是连续5个及以上连续的数,比如1,2,3,4,5、3,4,5,6,7,8和10,11,12,13,1等;双顺的定义是连续3个及以上连续的对(对:两个相同的数被称为对),比如1,1,2,2,3,3、4,4,5,5,6,6,7,7和11,11,12,12,13,13,1,1等;3顺的定义是连续2个及以上连续的3张(3张:3个相同的数被称为3张),比如1,1,1,2,2,2、3,3,3,4,4,4,5,5,5,6,6,6和13,13,13,1,1,1等等;
比如:输入数组[1,5,2,3,4,4,5,9,6,7,2,3,3,4], 输出数组[2,2,3,3,4,4,5,5]
具体实现如下:
package org.fanzone.collections;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
/**
* Title: base<br>
* Description: <br>
* Copyright: Copyright (c) 2011 <br>
* Create DateTime: Jun 2, 2011 8:56:25 PM <br>
* @author wangmeng
*/
public class CardSort {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<String> list = new ArrayList<String>();
Set<String> set = new HashSet<String>();
if(scanner.hasNext()){
String[] num = scanner.next().split(",");
Arrays.sort(num);
for(int i=0;i<num.length;i++){
for(int j=0;j<num.length-i-1;j++){
if(num[j].equals(num[j+1])){
set.add(num[j]);
}
}
}
for(int i=0;i<num.length;i++){
for(Iterator<String> itr = set.iterator();itr.hasNext();){
String n = itr.next();
if(num[i].equals(n)){
list.add(n);
}
}
}
for(String element : list){
System.out.print(element+" ");
}
}
}
}
分享到:
相关推荐
在Java编程语言中,数据结构是...此外,数组转换成List或Set时,如果数组包含null元素,转换后的集合可能不包含这些null元素,因为集合通常不允许null。在实际应用中,应根据具体情况选择合适的数据结构和转换方法。
在Java编程语言中,数据结构之间转换是常见的需求,尤其是集合框架中的List、Set和Map以及数组。本文将深入探讨这些数据结构之间的转换方法,并提供相关的实例代码。 1. **List转Set** 要将一个List转换为Set,...
对于基本数据类型的数组,例如`int[]`、`double[]`、`char[]`等,`Arrays`类提供了一个`sort()`方法来进行升序排序。这个方法基于“经过调优的快速排序法”,具有较高的效率。例如,以下代码展示了如何对一个整型...
最后,关于数组应用的实践,你可能还会遇到排序、查找、复制等操作。C#提供了丰富的内置方法,如`Array.Sort()`用于排序,`Array.IndexOf()`用于查找特定元素,`Array.Copy()`用于复制数组部分或全部。 总的来说,...
可以将数组直接传递给HashSet的构造函数,或者先转换为List再转换为Set,如`new HashSet(Arrays.asList(array))`。 从Collection转换为数组,可以调用`Collection.toArray()`方法。这个方法有两重载版本,一个不...
数组及其应用 arrays are a fundamental data structure in programming, and understanding their concepts and applications is essential for any programmer. In this experiment, we will delve into the ...
在Java编程语言中,数据结构...总的来说,掌握Java中List、Set与Array之间的转换技巧,对于编写高效、灵活的代码至关重要。这不仅涉及到数据结构的选取,还关系到如何根据具体需求在不同数据结构间进行有效的数据迁移。
List<Integer> list = new ArrayList(Arrays.asList(numbers)); ``` 八、数组作为方法参数 数组可以作为方法的参数传递,这在函数式编程中非常常见。例如,一个计算数组元素总和的函数: ```java public static ...
此外,Java提供了多种数组操作,如System.arraycopy()用于复制数组部分,Arrays.sort()进行排序,以及Arrays.equals()比较两个数组是否相等。 栈和堆是Java内存管理中的两个关键区域。栈主要用于存储局部变量、方法...
使用 Arrays 的 asList 方法可以快速地将数组转换为 List,但是生成的 List 是不可变的,即不能添加或删除元素。而使用循环将数组元素一个个添加到列表中可以生成可变的 List,但是需要更多的代码和时间。 在实践中...
Java的`Arrays`类是Java Util包中的一个非常重要的工具类,它提供了许多方便的方法来操作数组,包括初始化、排序、查找以及比较等。在上述文档中,我们看到`Arrays`类的一些主要应用: 1. **给数组赋值**: - `...
Android获取arrays.xml里的数组字段值实例详解 比如在arrays.xml里: <!--leo added for KYLIN-496--> <string name=reboot_item> <item>Reboot</item> <item>Recovery</item> <item>BootLoader</item> ...
使用 Arrays 类的 asList() 方法可以将数组转换为 List。该方法返回一个固定长度的列表,不能进行添加或删除元素的操作。 ```java import java.util.Arrays; import java.util.List; public class Main { public ...
在实际应用中,可能需要对结果进行优化,例如使用Set避免重复,或者使用Stream API来简化代码。此外,对于大数据量的输入,还需要考虑性能优化,如使用并行计算或记忆化搜索等技术。 总结来说,从n个数组中取出所有...
在Java应用中,Aviator 特别适合用于数据分析和处理,例如对 List 中的数据进行求和、排序、找出最大值和最小值等操作。在给定的“aviator 实现 List 的求和、排序、最大、最小值”的主题中,我们将深入探讨如何利用...
集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等。Collection 接口没有实现类,因此需要通过其子接口来实现。 Set 是一个...
在本实验中,我们编写了一个 Java 应用程序,输出数组 a 的全部元素,并将数组 a 的全部或部分元素复制到其他数组中,然后改变其他数组的元素的值,再输出数组 a 的全部元素。 知识点: * 数组的复制 * Arrays....
在Java编程语言中,集合框架是处理对象的主要工具,其中包括List、Set和Queue等接口。本文将重点关注Set的用法及其与List的区别。 首先,让我们理解Set的基本概念。Set是一个不允许有重复元素的集合,它遵循唯一性...
除了以上的基本应用,Java数组还支持许多其他操作,如排序(使用`Arrays.sort()`方法)、填充(使用`Arrays.fill()`方法)以及复制(使用`System.arraycopy()`方法)。此外,Java还提供了多维数组,可以创建数组的...
"ejercicios-arrays"这个练习集将涵盖数组的基本概念、操作、以及在实际编程中的应用。通过解决这些问题,你将加深对Java数组的理解,提高编程技能,特别是对于数组操作和优化方面的能力。此外,多做练习还能帮助你...