打牌里面经常出现的5张牌,一个顺子带一对,给你五张牌,比如:1,2,2,2,3 或者 5,6,7,4,4 或者 2,4,3,5,5 或者 7,5,9,6,9 ,这种情况就符合一个顺子带一对,则返回 true;反之比如:1,3,4,6,6 或者 1,5,5,3,4 这种返回false,请你在不能使用任何数组原生方法,只能使用循环和赋值的情况下完成。

public class test7 {
//判断是否为一个顺子带一对的方法
public static boolean test(int [] a) {
int index = -1;//用来记录对子中第一个元素的下标
int [] sequence = new int [a.length-2];//用来存放顺子 //首先对数组进行排序,这里使用的选择排序
selectSort(a); //将数组从小到大排好序后,双重循环找到重复元素出现的下标
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length-1; j++) {
if(a[j+1]==a[j]) {
index = j;
}
}
} //根据下标,去除一个对子,将剩下的元素存放到一个新的数组,这个数组仍然是有序的
for (int i = 0,j=0; i < a.length; i++) {
if(i!=index&&i!=(index+1)) {
sequence[j] = a[i];
j++;
}
} //调用判断是否为顺子的方法
return isSequence(sequence);
} //选择排序的方法
public static void selectSort(int [] a) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length-1; j++) {
if(a[j+1]<a[j]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
} //判断是否为顺子的方法
public static boolean isSequence(int [] a) {
boolean flag = true;
for (int i = 0; i < a.length-1; i++) {
if(a[i+1]-a[i]!=1) {
flag = false;
break;
}
}
return flag;
} //主方法测试,成功
public static void main(String[] args) {
int [] a1 = {1,2,2,2,3,4};
int [] a2 = {5,6,7,4,4};
int [] a3 = {2,4,3,5,5};
int [] a4 = {7,5,9,6,9};
int [] a5 = {1,5,5,3,4};
int [] a6 = {2,1,3,4,6,6}; System.out.println(test(a1) == true? "顺子加对子":"非顺子加对子");
System.out.println(test(a2)== true? "顺子加对子":"非顺子加对子");
System.out.println(test(a3)== true? "顺子加对子":"非顺子加对子");
System.out.println(test(a4)== true? "顺子加对子":"非顺子加对子");
System.out.println(test(a5)== true? "顺子加对子":"非顺子加对子");
System.out.println(test(a6)== true? "顺子加对子":"非顺子加对子");
}
}

Java算法面试题 一个顺子带一对的更多相关文章

  1. Java算法面试题(史上最强、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  2. java算法面试题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个, 如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。

    package com.swift; import java.util.Scanner; public class Hanzi_jiequ { public static void main(Stri ...

  3. java算法面试题:设计一个快速排序。双路快速排序,简单易于理解。

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...

  4. java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序

    package com.swift; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; publi ...

  5. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg

    package com.swift; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; i ...

  6. java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  7. java算法面试题:排序都有哪几种方法?请列举。用JAVA实现一个快速排序。选择冒泡快速集合至少4种方法排序

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...

  8. java算法面试题:写一个Singleton出来

    package com.swift; public class Singleton { public static void main(String[] args) { /* * 写一个Singlet ...

  9. java算法面试题

    前言:线上面试题与大家分享,并记录求职道路的酸甜苦辣,特此留念. 李雷和韩梅梅坐前后排,上课想说话怕被老师发现,所以改为传小纸条.为了不被老师发现他们纸条上说的是啥,他们约定了如下方法传递信息:将26 ...

随机推荐

  1. Ajax效果--个人收藏

    $.ajax({ url: "../../../Tools/WeChatMenu.ashx?action=get_menu", type: "post", da ...

  2. Java探索之旅(5)——数组

    1.声明数组变量:        double[] array=new double[10];         double array[]=new double[10];       double[ ...

  3. python fabric的安装与使用

    背景:fabric主要执行远程的shell命令,包括文件的上传.下载,以及提示用户输入等辅助其它功能. 测试系统:ubuntu16 要求:python //系统有自带,ubuntu16 通常自带pyt ...

  4. CSS 布局_如何实现容器中每一行的子容器数量随着浏览器宽度的变化而变化?

    实现一个浮动布局,红色容器中每一行的蓝色容器数量随着浏览器宽度的变化而变化,就如下图: 要实现这样一个布局,我们首先需要如下的 HTML: <div id="float-contain ...

  5. LoadRunner 服务器(Linux、Windows) 性能指标度量说明

    服务器资源性能计数器 下表描述了可用的计数器: 监控器 度量 说明 CPU 监控器 Utilization 监测 CPU 利用率. 磁盘空间监控器 Disk space 监测可用空间 (MB) 和已用 ...

  6. [poj1390]Blocks(方块消除)

    题目大意:给定一序列,可点击某一位置消除与其相邻且相同的方块,得分为$len*len$,求最大得分. 解题关键:关键是状态的构造,首先离散化一下,令$dp[i][j][k]$表示序列$i-j$且后面有 ...

  7. Unity实现支持泛型的事件管理以减少使用object作为参数带来的频繁装拆箱

    如果不用C#自身的event关键字而是要自己实现一个可统一管理游戏中各种消息事件通知管理的系统模块EventManger时,通常都是把事件delegate的参数定义为object类型以适应所有的数据类 ...

  8. Material使用07 MdGridListModule的使用

    1 MatGridListModule简介 对相似数据的展现,尤其是像是图片的展示 使用起来很像表格 官方文档:点击前往 2 MatGridListModule提供的指令 2.1 mat-grid-l ...

  9. Ubuntu下crontab命令的用法

    cron是一个Linux下的后台进程,用来定期的执行一些任务.因为我用的是Ubuntu,所以这篇文章中的所有命令也只能保证在Ubuntu下有效,但其他系统应该也差不多. 想要让cron执行你指定的任务 ...

  10. 工作随记——弹出QQ联系方式

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=1&uin=QQ号码&site=qq& ...