JAVA面試題筆試題-查詢一個字串不重複最長的串(個人方法)

愛吃早餐的程式設計師發表於2020-11-23
  • 面試題或者筆試題常問的演算法
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import org.apache.commons.lang.StringUtils;

/*
 * 【Author】 愛吃早餐的程式設計師
 * 【Time】2020年11月23日 下午2:28:17
 * 【Function】查詢一個字串不重複最長的串
 */
public class Test5 {
	public static void main(String[] args) {
		String string = "suhdfuisehwerqiowo";
		String findNotDupLong = findNotDupLong(string);
		System.err.println("不重複最長的串:"+findNotDupLong);
	}

	private static String findNotDupLong(String string) {
		
		if (StringUtils.isBlank(string)) {
			return "沒有找到";
		}
		
		ArrayList<String> arrayList = new ArrayList<String>();// 用於存入符合條件的串
		String[] split = string.split("");
		for (int i = 0; i < split.length; i++) {
			String begin = split[i];
			for (int j = i; j < split.length; j++) {
				if (begin.equals(split[j])) {
					if (StringUtils.isNotBlank(string.substring(i, j))) {
						arrayList.add(string.substring(i, j));
					}
				}
			}
		}
		Collections.sort(arrayList, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				if (o1.length()>o2.length()) {
					return -1;
				}else {
					return 1;
				}
			}
		});
		
		return arrayList.size()>0?arrayList.get(0):"沒有找到";
			
	}
}
  • 大家有什麼好的方法沒

相關文章