根据一个面试题目编写:请实现一个函数:最长顺子;输入很多个整数(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+" ");
}
}
}
}
分享到:
相关推荐
数组可以直接转换为`List`,但是需要注意的是,通过`Arrays.asList()`方法创建的`List`实际上是一个不可变的列表,也就是说它不支持`add()`或`remove()`等操作。如果需要一个可修改的`List`,可以通过以下方式实现:...
### List转换成String数组 在Java编程语言中,经常需要将`List<String>`类型的数据转换为`String[]`数组类型,以便于进行某些特定的操作或适应某些方法的要求。本文将详细探讨这一转换过程,并通过几个具体的示例来...
在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()`方法。这个方法有两重载版本,一个不...
2. `Arrays类`:提供了一系列静态方法,如排序`Arrays.sort()`,复制`Arrays.copyOf()`等。 六、数组与集合的区别 虽然ArrayList等集合类在功能上可以替代数组,但数组有其独特优势。数组的访问速度更快,因为它在...
在这个示例中,`Arrays.asList()` 方法被用来将字符串数组转换为 `List<String>` 类型的列表。需要注意的是,通过这种方式得到的列表实际上是数组的一个视图,对列表进行修改会直接影响原数组。如果希望得到一个新的...
数组及其应用 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内存管理中的两个关键区域。栈主要用于存储局部变量、方法...
在这个实验中,我们主要探讨了Java编程中的一些基础概念,包括方法的定义、重载以及一维数组的应用,特别是如何定义数组并找到其中的最小值。以下是对这些知识点的详细说明: 1. **方法的定义**: 在Java中,方法...
本篇将详细介绍如何在Android应用中获取`arrays.xml`中的数组字段值。 首先,我们需要在`res/values/arrays.xml`文件中创建一个字符串数组,例如: ```xml <!--leo added for KYLIN-496--> <item>Reboot ...
使用 Arrays 的 asList 方法可以快速地将数组转换为 List,但是生成的 List 是不可变的,即不能添加或删除元素。而使用循环将数组元素一个个添加到列表中可以生成可变的 List,但是需要更多的代码和时间。 在实践中...
Java的`Arrays`类是Java Util包中的一个非常重要的工具类,它提供了许多方便的方法来操作数组,包括初始化、排序、查找以及比较等。在上述文档中,我们看到`Arrays`类的一些主要应用: 1. **给数组赋值**: - `...
使用 Arrays 类的 asList() 方法可以将数组转换为 List。该方法返回一个固定长度的列表,不能进行添加或删除元素的操作。 ```java import java.util.Arrays; import java.util.List; public class Main { public ...
对于基本类型的数组,如int、double等,它会使用快速排序或归并排序等高效的算法。 `equals()`方法是另一个常用的功能,用于比较两个数组是否相等。注意,这里的“相等”不仅要求数组长度相同,还要求每个对应位置...
这里我们传递了一个类型匹配的空数组,`stringList.toArray()`方法会返回一个新的字符串数组,包含`stringList`的所有元素。 2. **数组转List** 数组转换为List有两种常见方法: - 方法一:使用`Arrays.asList...