static int length = 0; public static int lengthOfLongestUniqueSubstring(String s) { int tmpLength = 0; List<String> tmpList = new ArrayList<>(); if (s == null || s.isEmpty()) { return 0; } else { char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { if (tmpList.contains(String.valueOf(chars[i]).toLowerCase())) { String firstMeet = String.valueOf(chars[i]).toLowerCase(); int count = tmpList.indexOf(firstMeet); String substr = s.substring(count + 1); if (tmpLength > length) length = tmpLength; lengthOfLongestUniqueSubstring(substr); break; } else tmpList.add(String.valueOf(chars[i]).toLowerCase()); tmpLength++; } if (tmpLength > length)length = tmpLength; } return length; }