剑指offer-第六章面试中的各项能力(扑克牌中的顺子)

2023-05-13,,

//扑克牌顺子
//题目:在一个扑克牌中随机的抽5张牌,看是不是顺子。大小王为0,A为1,J为11,Q为12,K为13.其他数字为自己本身。
//思路:大小王可以代表任意一个数字,因此我们在看是不是顺子之前要先对数字进行排序,数出0的个数。
//如果相连的两个数字之间相差的总数是超出0的个数,那么就不是顺子,否则就是
public class IsContinue {
public void bubbleSort(int[] a){
if(a==null)
return;
//要进行n-1趟排序
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-i-1;j++){
if(a[j]>a[j+1])
swrap(a,j,j+1);
}
}
} public void swrap(int[] a, int j, int i) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public boolean isContinues(int[] a){
bubbleSort(a);
int count=0;
for(int i=0;i<a.length;i++){
if(a[i]==0)
count++;
else
break;
}
int small=count;//指向非零的数中的较小的数
int big=count+1;//指向较大的数
int interval=0;//较大的数减去相连的较小的数再减1后剩下的数。
for(;big<a.length;big++){
if(a[small]==a[big])//有对子,就不是顺子。
return false;
interval+=a[big]-a[small]-1;
small=big;
}
if(interval>count)
return false;
return true;
}
public static void main(String[] args){
int[] a={0,8,5,6,3};
IsContinue isContinue=new IsContinue();
isContinue.bubbleSort(a);
for(int i:a)
System.out.print(i+" ");
System.out.println();
if(isContinue.isContinues(a))
System.out.println("是顺子");
else
System.out.println("不是顺子"); }
}

剑指offer-第六章面试中的各项能力(扑克牌中的顺子)的相关教程结束。

《剑指offer-第六章面试中的各项能力(扑克牌中的顺子).doc》

下载本文的Word格式文档,以方便收藏与打印。