在给定的一个字符串中寻找出不包含重复字符的最长子串

public class Test2 {
	
	public static void main(String[] args) {
		
		List<String> list = new ArrayList<String>();
		StringBuilder ss = new StringBuilder();//用于拼接字符串
		
		String str = "asdfgrsefkkclgtdxdwee";//初始化一个测试用的字符串
		
		char[] strs = str.toCharArray();//将字符串转为字符数组
		//遍历字符数组
		for (int i = 0; i < strs.length; i++) {
			//判断字符串中是否包含此字符
			if (ss != null && ss.toString().contains(String.valueOf(strs[i])) ) {
				//将不含有重复的字符串放到list集合
				list.add(ss.toString());
				
				ss.delete(0, ss.length());//清空StringBuilder
				ss.append(String.valueOf(strs[i]));//将此重复的字符拼接到StringBuilder
				
				//判断此字符是否为字符串的最后一个字符;如果是则将之前拼接成的字符串添加到list集合中
				if (i == (strs.length - 1)) {
					list.add(ss.toString());
				}
			}
			//如果当前字符串不包含此字符,直接将其拼接到StringBuilder
			else {
				ss.append(String.valueOf(strs[i]));
				//如果当前字符串拼接的字符已经属于最后一个字符了,就直接将其放到list集合中
				if (i == (strs.length - 1)) {
					list.add(ss.toString());
				}
			}
		}

		// 遍历list集合,输出不含有重复字符的字符串
		StringBuilder maxString = new StringBuilder(list.get(0));
		for (String s1 : list) {
			System.out.println("长度:" + s1.length() + "    " + s1);
			if (s1.length() > maxString.length()) {
				maxString.delete(0, maxString.length());
				maxString.append(s1);
			}
		}
		System.out.println("\n" + "最长字符串: " + maxString);
	}
}

祝愿自己和大家可以在技术这条路上坚持下去,并且越走越远!

发布了20 篇原创文章 · 获赞 31 · 访问量 9579

猜你喜欢

转载自blog.csdn.net/feichitianxia/article/details/90411587