OJ练习7——T14 Longest Common Prefix

得到一个string序列的最长公共前缀。

【思路】

先求得最小string的长度,使得比较次数尽可能少。

对于要返回的prefix的每一位,从第一个string中取一个字符,拿来和其他string同样位置的字符比较;

如果不相同,则返回当前的prefix,否则添加到prefix后。

【注意】

读取第i个string的第j个字符:vec[i][j],或者*(vex[i].begin()+j)。明显前者更方便。

【my code】

class Solution {
public:
    string longestCommonPrefix(vector<string> &strs) {
    string res="";
    if(strs.empty())
            return res;
	int i, j, min=2147483647;
	char c;
	for(i=0; i<strs.size(); i++)
		min=min>strs[i].size()?strs[i].size():min;
	for(i=0; i<min; i++)
	{
		c=strs[0][i];
		//cout<<c;
		for(j=1; j<strs.size(); j++)
		{
			if(c!=strs[j][i])
				return res;
		}
		res.push_back(c);
	}
	return res;
    }
};

【总结】

刚开始没有strs是空串的情况处理,平台显示“runtime error”,last exacuted input:[]

可见刚开始即测试strs是empty的情况。

积累经验,学会保持代码完备性。

posted on 2015-04-08 10:04  EmmaLi  阅读(80)  评论(0编辑  收藏  举报

导航