题解 | #最长公共前缀#
最长公共前缀
https://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47
import java.util.*; public class Solution { /** * * @param strs string字符串一维数组 * @return string字符串 */ public String longestCommonPrefix (String[] strs) { // write code here //如果输入数组长度为0,直接不用考虑 if(strs.length == 0){ return ""; } //先当第一个是公共的,之后不断缩短它 String prefix = strs[0]; for(int i = 1; i< strs.length; i++){ String curr = strs[i]; int j = 0; //这是为了找到prefix与curr的公共子串 while(j < curr.length() && j < prefix.length() && curr.charAt(j) == prefix.charAt(j)){ j++; } //当j==0,说明没有相同的 if(j == 0){ return ""; } prefix = prefix.substring(0,j); } return prefix; } }
思路,用了两个循环,第一个循环遍历数组,第二个找数组元素,也就是字符串,每一个字符串与之前找到的公共前缀的公共前缀。这是一个不断缩短的过程。