[leetcode 14] Longest Common Prefix
2014-07-08 14:28
344 查看
题目:
Write a function to find the longest common prefix string amongst an array of strings.思路:
1.题目要求返回给定字符串数组的最长公共前缀子串,基于此,那么对于现有前缀来说,对于以后的遍历,只能使该前缀不断剪短或者保持不变,而不可能再增长;2.该题目可以在一次遍历中完成,若数组为空,直接返回空字符串;
3.先比较第一个字符串后最后一个字符串,寻找公共前缀子串,然后开始遍历数组,若某个字符串为空,直接返回空字符串,如果当前字符串的长度小于当前公共子串的长度,那么公共子串替换为当前字符串,若上述判断都通过,则对于现在的字符串s,比较result[result.size()-1]与s.[result.size()-1],若不等,result去掉最后一个字符,继续遍历,若相等,则继续遍历直至头部。
代码:
class Solution{ public: string longestCommonPrefix(vector<string> &strs){ if(strs.size()==0) return ""; string result=""; vector<string>::iterator b=strs.begin(); vector<string>::iterator e=strs.end()-1; int idx=0; while(idx<min((*b).size(),(*e).size())) { if((*b)[idx]==(*e)[idx]) { result+=(*b)[idx]; ++idx; } else break; } while(e!=b) { if((*e).size()==0) { result=""; break; } if((*e).size()<result.size()) result=*e; for(int i=result.size()-1;i>=0;--i) { if(result[i]!=(*e)[i]) result=result.substr(0,result.size()-1); } if(result.size()==0) break; --e; } return result; } };
相关文章推荐
- leetcode题解-13. Roman to Integer && 14. Longest Common Prefix && 20. Valid Parentheses
- Leetcode-14: Longest Common Prefix
- LeetCode之14_Longest Common Prefix
- LeetCode 14 - Longest Common Prefix
- LeetCode 14 Longest Common Prefix
- [LeetCode]--14. Longest Common Prefix
- LeetCode 14 — Longest Common Prefix(C++ Java Python)
- LeetCode之14---Longest Common Prefix
- LeetCode 14. Longest Common Prefix
- leetcode 14 Longest Common Prefix
- LeetCode 14. Longest Common Prefix
- Leetcode_14_Longest Common Prefix
- LeetCode - 14. Longest Common Prefix
- Longest Common Prefix leetcode 14
- Leetcode: 14. Longest Common Prefix
- LeetCode 14 -- Longest Common Prefix
- leetcode (14) - Longest Common Prefix
- LeetCode --- 14. Longest Common Prefix
- leetcode-14Longest Common Prefix
- 【LeetCode】14 - Longest Common Prefix