C++算法原理与实践(面试中的算法和准备过程)

第0部分 简介

1. 举个例子:面试的时候,可能会出一道算法考试题,比如写一个 strstr 函数——字符串匹配。

可能会想到用KMP算法来解题,但是该算法很复杂,不适宜在面试中使用。

1.1 C++利用char*的例子。该方法的复杂度是O(n)。注意代码中的注释,每一对括号的后面都给出了注释说明,用于匹配括号。

复制代码
/**
strstr
return the position of the first occurence of string target
in string source, or -1 if target is not part of source
*/
int strstr(char *src, char *dest)
{
    int len = 0;
    for (int i = 0; dest[i] != '\0'; i++)
        len++;

    int i = 0, j = 0;
    while (src[i] != '\0')
    {
        if (src[i] == dest[j])
        {
            j++;
            if (j == len)
            {
                return i - j + 1;
            } // if j == len
        } // if src[i] == dest[j]
        else
        {
            j = 0;
        } // else

        i++;
    } // while src[i] != '\0'
    return -1;
} // strstr

int main()
{
    char *src = "i am a chinese ";
    char *dest = "a ";

    printf("%d\n", strstr(src, dest));

    return 0;
}
复制代码

 这一种是非常普通的解法。

1.2. 注意编码规范问题,比如加入空格、适当的缩进。

1.3. strlen() 函数的时间复杂度是 O(n),要尽量减少使用次数。 

 

2. IT技术人员应该具备“翻越长城墙”这一基本技能。

3. 编码风格应该参照《google coding style》

  编码风格:缩进、拓号、变量名。

  编码习惯:异常检查、边界处理。

4. 面试的过程中要注意自己沟通能力的展现,让面试官时刻明白你的意图。

 面试被要求写代码时,应该主动写出合理的测试用例(Testcase)。

5. 如何练习算法

  资源:leetcode 、 cc150 等刷题网站。

 

posted @   健康平安快乐  阅读(317)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示