leetCode_LongestCommonPrefix

来源:互联网 发布:数据安全保护制度 编辑:程序博客网 时间:2024/06/06 20:16

最长公共前缀 


刚学习了STL的关联容器,就用map做了一下,尤其是使用下表添加和统计元素,真的很简洁方便。

 思路:设有n个字符串,从每个字符串的第一个字符开始比较,都相同,再开始比较下一个字符,直到碰见不相同或者是遇到一个字符串末尾,结束。

            关键是如何来比较每个字符串的对应字符。我用的是map容器,我发现如果比较下来都相同,那么存入map后,该字符对应的值(就是在所有字符串中目前为止统计的次数)应该是n的整数倍。




//测试:[],[""],["a"],["aa","aa"],["aa","ab"]//使用map来存储前缀和次数,严格按照strsde 顺序,从第一个字符开始添加到map中,如果前缀相同,//在每次遍历结束,当前位置字符在map中的个数应该是strs长度的整数倍//(之所以有1外其他的倍数,是因为存在["aa","aa"]这种情况)string longestCommonPrefix(vector<string>& strs) {if (strs.size() == 0)return "";string ret = "";map<char, int> charMap;int k = 0;bool stop = false;while (!stop){char temp;for (int i = 0; i<strs.size(); i++){if (k >= strs[i].size()){stop = true;return ret;}++charMap[strs[i][k]];temp = strs[i][k];}if (charMap[temp] % strs.size() == 0){ret = ret + temp;k++;}elsestop = true;}return ret;};


0 0
原创粉丝点击