面试题或者笔试题常问的算法
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):"没有找到"; }
}
大家有什么好的方法没
后来测试有错 已更新方法
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++) { for (int j = i; j < string.length(); j++) { if (string.substring(i,j).contains(string.charAt(j)+"")) { System.err.println(string.substring(i,j)+"==="+string.charAt(j)+""); arrayList.add(string.substring(i,j)); i++; j=i; } } } Collections.sort(arrayList, new Comparator<String>() { @Override public int compare(String o1, String o2) { if (o1.length()>o2.length()) { return -1; }else if (o1.length()< o2.length()) { return 1; }else { return 0; } } }); return arrayList.size()>0?arrayList.get(0):"没有找到"; }
本文分享 CSDN - 爱吃早餐的程序员。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。