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
int intListEle=a.get(i)
if(intListEle<0 || intListEle>100) {
return 0
}
}
StringBuilder strBuilder=new StringBuilder()
for (int i = 0
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
}
}