-
面试题或者笔试题常问的算法
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) {
1 String string = "suhdfuisehwerqiowo"; 2 String findNotDupLong = findNotDupLong(string); 3 System.err.println("不重复最长的串:"+findNotDupLong);}
private static String findNotDupLong(String string) {
1 if (StringUtils.isBlank(string)) { 2 3 4 5 return "没有找到"; 6 } 7 8 ArrayList<String> arrayList = new ArrayList<String>();// 用于存入符合条件的串 9 String[] split = string.split(""); 10 for (int i = 0; i < split.length; i++) { 11 12 13 14 String begin = split[i]; 15 for (int j = i; j < split.length; j++) { 16 17 18 19 if (begin.equals(split[j])) { 20 21 22 23 if (StringUtils.isNotBlank(string.substring(i, j))) { 24 25 26 27 arrayList.add(string.substring(i, j)); 28 } 29 } 30 } 31 } 32 Collections.sort(arrayList, new Comparator<String>() { 33 34 35 36 @Override 37 public int compare(String o1, String o2) { 38 39 40 41 if (o1.length()>o2.length()) { 42 43 44 45 return -1; 46 }else { 47 48 49 50 return 1; 51 } 52 } 53 }); 54 55 return arrayList.size()>0?arrayList.get(0):"没有找到"; 56} }
-
-
大家有什么好的方法没
-
后来测试有错 已更新方法
private static String findNotDupLong(String string) {
1 if (StringUtils.isBlank(string)) { 2 3 4 5 return "没有找到"; 6 } 7 ArrayList<String> arrayList = new ArrayList<String>();// 用于存入符合条件的串 8 String[] split = string.split(""); 9 for (int i = 0; i < split.length; i++) { 10 11 12 13 for (int j = i; j < string.length(); j++) { 14 15 16 17 if (string.substring(i,j).contains(string.charAt(j)+"")) { 18 19 20 21 System.err.println(string.substring(i,j)+"==="+string.charAt(j)+""); 22 arrayList.add(string.substring(i,j)); 23 i++; 24 j=i; 25 } 26 } 27 } 28 Collections.sort(arrayList, new Comparator<String>() { 29 30 31 32 @Override 33 public int compare(String o1, String o2) { 34 35 36 37 if (o1.length()>o2.length()) { 38 39 40 41 return -1; 42 }else if (o1.length()< o2.length()) { 43 44 45 46 return 1; 47 }else { 48 49 50 51 return 0; 52 } 53 } 54 }); 55 return arrayList.size()>0?arrayList.get(0):"没有找到"; 56}
本文分享 CSDN - 爱吃早餐的程序员。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。