pickingNumbers

0 阅读1分钟
package com.microsoft.acial.controller;

  


import java.util.ArrayList;

import java.util.HashSet;

import java.util.LinkedHashSet;

import java.util.List;

import java.util.Random;

import java.util.Set;

import java.util.UUID;

  


public class MicorosoftAcialController {

public static void main(String[] args) {

System.out.println("Hello World!");

}

/**

* given an integer arr, find the longest subarray where the absolute difference between two

* elements is less than or equal to 1.

* constrains:

* 2<=n<=100

* 0<=a[i]<=100

* the answer will be >=2;

* @param a

* @return

*/

public static int pickingNumbers(List<Integer> a) {

if(a==null) {

return 0;

}

if(a.isEmpty()) {

return 0;

}

int size = a.size();

if(size<2 || size>100) {

return 0;

}

for (int i = 0; i < a.size(); i++) {

int intListEle=a.get(i);

if(intListEle<0 || intListEle>100) {

return 0;

}

}

StringBuilder strBuilder=new StringBuilder();

for (int i = 0; i < a.size(); i++) {

strBuilder.append(a.get(i));

}

String string = strBuilder.toString();

Random random = new Random();

Set<String> strHashSet=new LinkedHashSet<String>();

List<CustomerBuilderSubStr> subStrList=new ArrayList<CustomerBuilderSubStr>();

int count=0;

while(true) {

int randomIndexBegin=random.nextInt(string.length());

int randomIndexEnd=random.nextInt(string.length());

int randomIndexEndPlus=randomIndexEnd+1;

if(randomIndexBegin<randomIndexEnd) {

String substring = string.substring(randomIndexBegin, randomIndexEndPlus);

strHashSet.add(substring);

CustomerBuilderSubStr subStrBuilder=new CustomerBuilderSubStr();

subStrBuilder.setId(UUID.randomUUID().toString());

subStrBuilder.setSrcStr(string);

subStrBuilder.setSubStr(substring);

subStrList.add(subStrBuilder);

}

count++;

if(count>1000000) {

break;

}

}

int count1=0;

Random random1=new Random();

Set<String> strHashSet1=new LinkedHashSet<String>();

while(true) {

strHashSet.forEach(e->{

int randomIndexSubStrBegin=random1.nextInt(e.length());

int randomIndexPairsEnd=random1.nextInt(e.length());

char charAt = e.charAt(randomIndexSubStrBegin);

char charAt1 = e.charAt(randomIndexPairsEnd);

String string1 = new String(charAt+""+charAt1);

strHashSet1.add(string1);

});

count1++;

if(count1>1000000) {

break;

}

}

Random random2=new Random();

List<HashSet<String>> listStrPairsSet=new ArrayList<HashSet<String>>();

int count2=0;

for(String e : strHashSet1) {

Set<String> strPairsHashSet2=new LinkedHashSet<String>();

while(true) {

int randomPairsIndexBegin=random2.nextInt(strHashSet1.size());

int randomPairsIndexEnd=random2.nextInt(strHashSet1.size());

char pairsFirstEle=e.charAt(randomPairsIndexBegin);

char pairsSecEle=e.charAt(randomPairsIndexEnd);

String string1 = new String(pairsFirstEle+pairsSecEle+"");

strPairsHashSet2.add(string1);

count2++;

if(count2>1000000) {

break;

}

}

listStrPairsSet.add((HashSet<String>) strPairsHashSet2);

}

for(Set hashSet : listStrPairsSet) {

if(checkListBlockEleIsRightData(hashSet)) {

}

}

return 0;

}

public static Boolean checkListBlockEleIsRightData(Set<String> hashSet) {

if(hashSet==null) {

return null;

}

if(hashSet.isEmpty()) {

return null;

}

for(String strTemp : hashSet) {

char firstElePairs=strTemp.charAt(0);

char secElePairs=strTemp.charAt(1);

Integer intFirstElePairs=Integer.valueOf(firstElePairs);

Integer intSecElePairs=Integer.valueOf(secElePairs);

int intValRet=intFirstElePairs-intSecElePairs;

int absIntValRet=Math.abs(intValRet);

if(!((absIntValRet==0) || (absIntValRet==1))) {

return false;

}

}

return true;

}

}

  


class CustomerBuilderSubStr{

private String id;

private String srcStr;

private String subStr;

private Set<String> subStrPairs;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getSrcStr() {

return srcStr;

}

public void setSrcStr(String srcStr) {

this.srcStr = srcStr;

}

public String getSubStr() {

return subStr;

}

public void setSubStr(String subStr) {

this.subStr = subStr;

}

public Set<String> getSubStrPairs() {

return subStrPairs;

}

public void setSubStrPairs(Set<String> subStrPairs) {

this.subStrPairs = subStrPairs;

}

}