在給定的一個字符串中尋找出不包含重複字符的最長子串

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);
	}
}

祝願自己和大家可以在技術這條路上堅持下去,並且越走越遠!

發佈了22 篇原創文章 · 獲贊 33 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章