字符串的最长子串
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;
//给定一个字符串,请你找出其中不含有重复字符的 **最长子串** 的长度。
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入字符串;");
String str = sc.next();
System.out.println(noDuplicate(str).length());
}
public static String noDuplicate(String str) {
if(str==null||str.length()==0){
return null;
}
Set<String> set = new HashSet<>();
String result = "";
//循环找到所有子串加入set集合
for (int i = 0; i < str.length(); i++) {
for (int j = i + 1; j <= str.length(); j++) {
String s = str.substring(i, j);
set.add(s);
}
}
int max = 0;
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
//利用LinkedHashSet不能添加重复元素的特征判断长度来确定有否有重复字符
LinkedHashSet<String> setchar = new LinkedHashSet<>();
String st = iterator.next().toString();
for (int a = 0; a < st.length(); a++) {
setchar.add(String.valueOf(st.charAt(a)));
}
if(setchar.size() == st.length()){
int len = st.length();
if(max < len){
max = Math.max(max, len);
result = st;
}
}
}
return result;
}
}