https://leetcode.com/problems/longest-uncommon-subsequence-ii/description/
코드설명
구현(Implementation) + 문자열(Substring)을 활용합니다.
가장 긴 일치하지 않는 공통부분수열의 길이를 구하는 문제입니다.
먼저, 구하기 위해 가장 긴 순서대로 Strs를 정렬합니다.
이후에 Strs를 순회하면서 다른 문자열들과 common 한지를 먼저 확인해보면서, 만약 다른 모든 String과 비교했을떄 모두 Uncommon 하다면, Uncommon Subseuqnece 이므로 값의 길이를 반환합니다. (이미 긴 순서대로 정렬되어있기에 상관 없습니다.)
코드
class Solution { public int findLUSlength(String[] strs) { Arrays.sort(strs, new Comparator<String>(){ @Override public int compare(String s1, String s2){ return Integer.compare(s2.length(), s1.length()); } }); for(int i=0; i<strs.length; i++){ boolean isUncommon = true; for(int j=0; j<strs.length; j++){ if(i == j) continue; if(isSubsequence(strs[i], strs[j]) == true){ isUncommon = false; break; } } if(isUncommon == true){ return strs[i].length(); } } return -1; } public boolean isSubsequence(String s1, String s2){ int i = 0, j = 0; while(i < s1.length() && j < s2.length()){ if(s1.charAt(i) == s2.charAt(j)){ i+=1; } j+=1; } return s1.length() == i; } }