classSolution { public String longestCommonPrefix(String[] strs) { StringBuildersb=newStringBuilder(); // get min length intmin_len= Integer.MAX_VALUE; for (inti=0; i < strs.length; i++){ if (strs[i].length() < min_len){ min_len = strs[i].length(); } }
if (min_len == 0){ return sb.toString(); }
// check char for (inti=0; i < min_len; i++){ charlast= strs[0].charAt(i); booleansame=true; for (intj=1; j < strs.length; j++){ if (strs[j].charAt(i) != last){ return sb.toString(); } } if (same){ sb.append(last); } } return sb.toString();
}
}
Remarks:
This is Vertical Scanning, by comparing the same position of all strings.
Horizontal Scanning
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution { public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length == 0) return"";
Stringprefix= strs[0];
for (inti=1; i < strs.length; i++) { //cut the prefix if does not match while (!strs[i].startsWith(prefix)) { prefix = prefix.substring(0, prefix.length() - 1); if (prefix.isEmpty()) return""; } }