importjava.util.ArrayList;importjava.util.Collections;importjava.util.HashMap;importjava.util.List;importjava.util.Map;publicclassSample121{privatestaticfinalStringRANK_LIST="A23456789TJQKA";privatestaticfinalStringROYAL="royal ";privatestaticfinalStringSTRAIGHT="straight";privatestaticfinalStringFLUSH="flush";privatestaticfinalStringFULL_HOUSE="Full house";privatestaticfinalStringCARDS_4="Four of a kind";privatestaticfinalStringCARDS_3="Three of a kind";privatestaticfinalStringPAIR_2="Two pair";privatestaticfinalStringPAIR_1="One pair";privatestaticfinalStringNothing="No pair";publicstaticStringgetPokerRole(Stringcards){if(cards.length()!=2*5)thrownewIllegalArgumentException();StringrankList=createRankList(cards);booleanflush=isFlush(cards);booleanstraight=isStraight(rankList);if(flush||straight){booleanroyal=isRoyal(rankList);if(royal){returnformat(flush?ROYAL+FLUSH:ROYAL+STRAIGHT);}else{if(flush&&straight){returnformat(STRAIGHT+" "+FLUSH);}else{returnformat(flush?FLUSH:STRAIGHT);}}}Integer[]integers=countSameNumber(rankList);switch(integers[0]){case4:returnCARDS_4;case3:if(integers[1]==2){returnFULL_HOUSE;}else{returnCARDS_3;}case2:if(integers[1]==2){returnPAIR_2;}else{returnPAIR_1;}}returnNothing;}privatestaticStringformat(Stringstr){returnstr.substring(0,1).toUpperCase()+str.substring(1);}privatestaticbooleanisFlush(Stringcards){charsuit=cards.charAt(0);for(intindex=1;index<5;index++){if(suit!=cards.charAt(index*2)){returnfalse;}}returntrue;}privatestaticStringcreateRankList(Stringcards){StringBuilderbuilder=newStringBuilder();for(intindex=0;index<5;index++){finalcharrank=cards.charAt(index*2+1);intinsert=0;for(;insert<builder.length();insert++){if(RANK_LIST.indexOf(builder.charAt(insert))>RANK_LIST.indexOf(rank)){break;}}builder.insert(insert,rank);}returnbuilder.toString();}privatestaticbooleanisStraight(StringrankList){returnRANK_LIST.indexOf(rankList)>=0;}privatestaticbooleanisRoyal(StringrankList){returnrankList.equals("ATJQK");}privatestaticInteger[]countSameNumber(StringrankList){Map<Character,Integer>map=newHashMap<Character,Integer>();for(intindex=0;index<rankList.length();index++){charc=rankList.charAt(index);Integerinteger=map.get(c);if(integer==null){integer=1;map.put(c,integer);}else{map.put(c,integer+1);}}List<Integer>result=newArrayList<Integer>(map.values());Collections.sort(result,Collections.reverseOrder());returnresult.toArray(newInteger[0]);}publicstaticvoidmain(String[]args){System.out.println(getPokerRole("SQSJSASKST"));System.out.println(getPokerRole("D9D7D6D5D8"));System.out.println(getPokerRole("C2D2S2H3H2"));System.out.println(getPokerRole("C2D3S2H3H2"));System.out.println(getPokerRole("S9S4S8STSJ"));System.out.println(getPokerRole("C4H7D5S6H3"));System.out.println(getPokerRole("S6H6C5DQC6"));System.out.println(getPokerRole("S6HQC5DQC6"));System.out.println(getPokerRole("S6H4C5DQC6"));System.out.println(getPokerRole("SJSQSKSAC2"));}}
horiuchi
#4984()
[
Java
]
Rating0/0=0.00
素直に順番に条件チェックしてみました。
Rating0/0=0.00-0+
[ reply ]