import java.util.*;
public class YILIDETest2 {
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String nextLine = scanner.nextLine(); int maxLenSubStr = getMaxLenSubStr(nextLine); System.out.println(maxLenSubStr); }
/** * 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度 * @param srcStr * @return */ public static int getMaxLenSubStr(String srcStr){ if (srcStr==null){ return 0; } if (srcStr.isEmpty()){ return 0; } String trim = srcStr.trim(); if (trim.isEmpty()){ return 0; }
int length = trim.length(); Random random = new Random(); HashSet<String> stringHashSet = new HashSet<>(); int count=0; while (true){ for (int i = 0; i < length; i++) { int trimStrBegIndex = random.nextInt(length); int trimStrEndIndex = random.nextInt(length); if (trimStrEndIndex>trimStrBegIndex){ String substring = srcStr.substring(trimStrBegIndex, trimStrEndIndex); stringHashSet.add(substring); } } count++; if (count>1000000){ break; } }
System.out.println(stringHashSet);
ArrayList<String> stringArrayList = new ArrayList<>(); for (String s : stringHashSet) { boolean checkStrIsRepeatChar = checkStrIsRepeatChar(s); if (!checkStrIsRepeatChar){ stringArrayList.add(s); } }
Collections.sort(stringArrayList, new Comparator<String>() { @Override public int compare(String o1, String o2) { int length1 = o1.length(); int length2 = o2.length(); if (length1<length2){ return 1; }else if (length1>length2){ return -1; } return 0; } });
String s = stringArrayList.get(0); System.out.println(stringArrayList); System.out.println(s);
return s.length(); }
/** * 判断字符串是否含有重复字符 * @param srcStr * @return */ public static boolean checkStrIsRepeatChar(String srcStr){ if (srcStr==null){ return false; } if (srcStr.isEmpty()){ return false; }
int length = srcStr.length(); HashMap<Character, Integer> characterIntegerHashMap = new HashMap<>(); for (int i = 0; i < length; i++) { char charAt = srcStr.charAt(i); if (characterIntegerHashMap.containsKey(charAt)){ characterIntegerHashMap.put(charAt,characterIntegerHashMap.get(charAt)+1); }else { characterIntegerHashMap.put(charAt,1); } }
System.out.println(characterIntegerHashMap);
for (Map.Entry<Character,Integer> entry : characterIntegerHashMap.entrySet()){ Character key = entry.getKey(); Integer value = entry.getValue();
if (value<2){ continue; }else { return false; } } return false; } }
|