《程序员面试金典》记录
面试题 01.01. 判定字符是否唯一
class Solution {
public:
bool isUnique(string astr) {
int len = astr.size();
for(int i=0; i<len; ++i)
{
for(int j=i+1; j<len; ++j)
{
if(astr[i]==astr[j])
return false;
}
}
return true;
}
};
本题非常简单,但是并没有一次通过。主要错误点在于,没有注意到第二次循环需要从i+1开始,错误的写成了i
面试题 01.02. 判定是否互为字符重排
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
if(s1.size()!=s2.size()) return false;
unordered_map<char,int> map;
for(char c:s1)
{
map[c] +=1;
}
for(char c:s2)
{
map[c] -= 1;
}
for(auto x: map)
{
if(x.second!=0)
return false;
}
return true;
}
};
本题思路在与使用map先记录s1后通过计数匹配s2。unordered_map速度比map快。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Miasol's Blog!