leetcode題庫——最長公共字首
阿新 • • 發佈:2018-12-15
題目描述:
編寫一個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 ""
。
示例 1:
輸入: ["flower","flow","flight"] 輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"] 輸出: "" 解釋: 輸入不存在公共字首。
說明:
所有輸入只包含小寫字母 a-z
。
方法:
class Solution { public: string longestCommonPrefix(vector<string>& strs) { if(strs.size()==0) return ""; string str=strs[0];//初始預設為第一個字串 char flag[200]; int p,num; if(strs.size()==1) return strs[0]; string first=strs[0];//取出第一個字串 for(int i=1;i<strs.size();i++) { string other=strs[i]; for(p=0;p<first.size()&&p<other.size();p++) { if(first[p]==other[p]) flag[p]=first[p]; else break; } num=p;//記錄第一個單詞與其他單詞公共字首的長度 if(num<str.size()) { string Str=""; for(int q=0;q<num;q++) Str=Str+flag[q]; str=Str; } } return str; } };
思路:
將每個字串取出,用第一個跟後面的所有字串作比較,記錄公共字首長度,如果比之前的小,就更新一下公共字首。注意一下各種邊界情況。