闲来无事写几个常用在面试中遇到的功能函数
1.剔除字符串其它与字符串无关符号,只保留字符和数字
void trim(std::string& s)
{
std::vector<char> v;
for (const auto& c : s)
{
if (isalnum(c))
{
v.push_back(c);
}
}
s.replace(s.begin(), s.end(), v.begin(), v.end());
}
2.atoi的实现
int a2i(const char* str)
{
int os = 1;
auto p = str;
while (isspace(*p)) { p++; }
if (*p == '+') {
p++;
}
else if (*p == '-') {
os = -1;
p++;
}
int v = 0;
while (isdigit(*p)) { v = v*10+(*p++ - '0'); }
return os*v;
}
3.冒泡排序,一样也是面试经常遇到的
void pop_sort(std::vector<int>& vs)
{
auto sz = vs.size();
for (int i = 0; i < sz; i++)
{
for (int j = i+1; j < sz; j++)
{
if (vs[i] > vs[j])
{
auto t = vs[i];
vs[i] = vs[j];
vs[j] = t;
}
}
}
}
4.字符串反序
char* fsort(char* src)
{
char* h = src;
char* l = h + strlen(src)-1;
for (; h < l; h++,l--)
{
auto t = *h;
*h = *l;
*l = t;
}
return src;
}