sockMerchant different group pairs from integer
/** * sockMerchant * * different group pairs from integer arr * unique pairs number * if pairs number reverse into another pairs string, result is given same tag number * return pairs number size * * constriant * * sock number size * 1<=n<=100 * * integer arr socks number image tag statics * * 1<=arr[i]<=100 * * integer arr sock index edge * * where index i enclusure * i: 0<=i<n * @param n * @param ar * @return */ public static int sockMerchant(int n, List<Integer> ar) { if(n<1 || n>100) { return 0; } for(Integer intTemp : ar) { if(intTemp<1 || intTemp>100) { return 0; } } Random random=new Random(); Set<String> hashSet=new HashSet<String>(); int count=0; while(true){ int nextIntIndexFir = random.nextInt(n); int nextIntIndexSec=random.nextInt(n); if(nextIntIndexFir==nextIntIndexSec) { continue; } Integer integerRandomEleFir = ar.get(nextIntIndexFir); Integer integerRandomEleSec = ar.get(nextIntIndexSec); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(integerRandomEleFir); stringBuilder.append(integerRandomEleSec); String string = stringBuilder.toString(); hashSet.add(string); count++; if(count>1000000) { break; } } Map<String, Integer> hashMap = new HashMap<String,Integer>(); for(String strTemp : hashSet) { if(hashMap.containsKey(strTemp)) { if(checkPairsStrIsHuiWenPattern(strTemp)) { hashMap.put(strTemp, hashMap.get(strTemp)+1); } }else { hashMap.put(strTemp, 1); } } ArrayList<String> arrayList = new ArrayList<String>(); for (Map.Entry<String, Integer> entry : hashMap.entrySet()) { String key = entry.getKey(); Integer val = entry.getValue(); arrayList.add(key); } boolean flagLevelNumLessThanTen=true; for(Integer intTemp : ar) { if(checkStrNumIsLessThanTen(String.valueOf(intTemp))) { continue; }else { flagLevelNumLessThanTen=false; } } int imageSameTagCount=0; if(flagLevelNumLessThanTen) { for(String strTemp : arrayList) { if(checkStrIsRepeatChar(strTemp)) { imageSameTagCount++; } } return (arrayList.size()-imageSameTagCount)/2+imageSameTagCount; }else { return arrayList.size()/2; } } public static boolean checkPairsStrIsHuiWenPattern(String srcPairStr) { if(srcPairStr==null) { return false; } String trim = srcPairStr.trim(); if(srcPairStr.isEmpty()) { return false; } if(trim.length()!=2) { return false; } for (int i = 0; i < trim.length(); i++) { char charAt = trim.charAt(i); char charAt2 = trim.charAt(i+1); if(charAt!=charAt2) { return false; } } return true; } public static boolean checkStrIsHuiWenStr(String srcStr) { if(srcStr==null) { return false; } String srcStrTemp=srcStr.trim(); if(srcStrTemp.isEmpty()) { return false; } char[] charArray = srcStrTemp.toCharArray(); for(int i=0;i<charArray.length;i++) { char charFroIndexBeg = charArray[i]; char charFroIndexEnd = charArray[charArray.length-1-i]; if(!(i==(charArray.length-1-i))) { continue; } if(!(charFroIndexBeg==charFroIndexEnd)) { return false; } } return true; } public static boolean checkStrIsRepeatChar(String srcStr) { if(srcStr==null) { return false; } String srcStrTemp=srcStr.trim(); if(srcStrTemp.isEmpty()) { return false; } if(!checkStrIsHuiWenStr(srcStrTemp)) { return false; } for(int i=0;i<srcStr.length();i++) { char charTemp=srcStr.charAt(i); if(i==srcStr.length()-1) { break; } char charTempNextIndexPlus=srcStr.charAt(i+1); if(!(charTemp==charTempNextIndexPlus)) { return false; } } return true; } public static boolean checkStrNumIsLessThanTen(String srcStr) { if(srcStr==null) { return false; } String srcStrTemp=srcStr.trim(); if(srcStrTemp.isEmpty()) { return false; } Integer valueOf = Integer.valueOf(srcStrTemp); if(valueOf>10 || valueOf<1) { return false; } return true; }#打工人的工作餐日常##追觅科技求职进展汇总##牛客创作赏金赛##哪些公司真双非友好?##你觉得技术面多长时间合理?#
Java技术 文章被收录于专栏
JavaEE技术 编程开发经验 企业通用技术