backtracking concise and clean for interviews
\t  private int maxLen = 0;\n\n\t  public int maxLength(List arr) {\n\t\tmaxLen = 0;\n\n\t\tSet set = new HashSet<>();\n\t\thelper(set, arr, 0);\n\n\t\treturn m
\t  private int maxLen = 0;\n\n\t  public int maxLength(List<String> arr) {\n\t\tmaxLen = 0;\n\n\t\tSet<Character> set = new HashSet<>();\n\t\thelper(set, arr, 0);\n\n\t\treturn maxLen;\n\t  }\n\n\t  private void helper(Set<Character> set, List<String> arr, int index) {\n\t\tif (index == arr.size()) {\n\t\t  return;\n\t\t}\n\n\t\tchar[] s = arr.get(index).toCharArray();\n\n\t\tboolean unique = true;\n\n\t\tSet<Character> chars = new HashSet<>();\n\t\tfor (char ch : s) {\n\t\t  if (chars.contains(ch) || set.contains(ch)) {\n\t\t\tunique = false;\n\t\t\tbreak;\n\t\t  }\n\n\t\t  chars.add(ch);\n\t\t}\n\n\t\thelper(set, arr, index + 1);\n\n\t\tif (unique) {\n\t\t  maxLen = Math.max(maxLen, set.size() + s.length);\n\n\t\t  set.addAll(chars);\n\t\t  helper(set, arr, index + 1);\n\t\t  set.removeAll(chars);\n\t\t}\n\t  }
['String', 'Backtracking', 'Ordered Set', 'Java']