longest-common-prefix(最长公共前缀)

 

https://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47?tpId=46&tqId=29164&tPage=3&rp=3&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking

思路: 将字符串按字典排序。然后因为第一个单词和最后的一个单词的差别是最大的。首先比较这两个单词的首部,如果他们首部不同直接返回空!表示这些单词没有公共前缀。 

如果首部相同的话就继续比较下一位即可.........

 


class Solution {
public:
    string longestCommonPrefix(vector<string> &strs) {
        string res = "";
		int n = strs.size();
		if(n <= 0){
			return res;

		}
		//按字典排序
		sort(strs.begin(), strs.end());

		//最后一个单词和第一个单词的首字母不同
		//那么肯定不会有相同前缀了。
		if(strs[0][0] != strs[n - 1][0])
			return res;
		
		//取最小长度取比较
		int size = min(strs[0].length() , strs[n - 1].length() );

		//从头部比较每个字符
		for(int i = 0; i < size; i++){
			if(strs[0][i] == strs[n - 1][i])
				res += strs[0][i];
			else
				break;//不同就是找完前缀了
			
		}

		return res;
		

    }
};

 

上一篇:论美妙的共鸣


下一篇:optee 实现java->jni->ca->user ta