编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
示例3:
[]
示例4:
[""]
示例5:
["a"]
示例6:
["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "a"]
说明:
所有输入只包含小写字母 a-z 。
- 解题思路:
先考虑特殊情况,当输入为空时,有示例3和示例4两种情况;当输入字符串长度为1时,如示例5;当字符串过长时,如示例6;class Solution { public: string longestCommonPrefix(vector<string>& strs) { string result = ""; string str, temp; int length; if (strs.size() == 0) // 考虑 [] 与 [""] 两种情况 return result; else if (strs.size() == 1){ // 考虑 ["a"] return strs[0]; } else{ str = strs[0]; for (int i=1; i<strs.size(); ++i){ temp = strs[i]; result = ""; if (str.length() < temp.length()) length = str.length(); else length = temp.length(); for (int j=0; j<length; ++j){ if (temp[j] == str[j]){ result += temp[j]; //continue; } else break; } str = result; } return result; } } };
Tips:
vector\<string\> strs
的字符串长度 strs.size()
string str
字符差un长度str.length()