面试日记|小米汽车

面试,日记,小米,汽车 · 浏览次数 : 106

小编点评

**滑动窗口法**是一种在字符串中寻找最长重复子串的算法。 **思路:** 1. **初始化**: - 创建一个长度为 0 的字符串 `tmp`。 - 设置两个指针 `left` 和 `right` 到 0 和字符串长度 `len` 之间。 - 设置 `maxlength` 到 0,表示目前记录的最高长度。 2. **遍历字符串**: - 循环遍历字符串 `s`。 3. **找到字符的结束位置**: - 使用 `strchr` 函数在 `tmp` 中查找字符串 `s` 中的最后一个字符的指针。 - 记录该位置到 `right` 中。 4. **更新最长长度**: - 检查 `maxlength` 是否大于当前子串的长度。 - 如果 `maxlength` 大于当前子串的长度,更新 `maxlength`。 5. **结束循环**: - 如果 `left` 等于 `right`,说明找到了最长重复子串,则更新 `maxlength`。 6. **返回最长长度**: - 返回 `maxlength`。 **其他嵌入式开发**: - 使用 `unordered_set` 容器存储和查找子串。 - `unordered_set` 是一个排序的集合,保证在查找元素时按顺序输出。 - 使用 `insert` 方法添加元素,使用 `size` 方法获取容器中的元素数量。 - 使用 `begin` 和 `end` 方法遍历容器。 **示例代码**: ```c++ #include #include using namespace std; int main() { string s = "JQJQKAQ312"; int k = lengthOfLongestSubstring(s); cout << "k = " << k << endl; return 0; } ``` **运行结果**: ``` k = 10 ```

正文

小米汽车

问题

image-20230403205932882

方法

思路:滑动窗口法,具体见:C语言中的窗口滑动技术

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int lengthOfLongestSubstring(char* s) {

	if (s == NULL)
		return 0;

	int len = strlen(s);
	char* tmp = (char*)calloc(len, 1);  
	int right = 0; // 当前字符串长度
	int left = 0; // 控制子串起始位置
	int maxlength = 0; // 记录最长长度

	for (int i = 0; i < len; i++)
	{
		char* p = strchr(tmp + left, s[i]);//这里需要注意的一点是字符必须先判断后复制

		tmp[right] = s[i];      //逐个遍历,存储
		right++;

		if (p) // 如果该字符已存在,就跳到前面重复字符的下一个位置
		{
			left = p - tmp + 1;     //p指针后一位
		}

		int curlength = right - left; // 当前子串长度
		if (maxlength < curlength)// 找最长
		{
			maxlength = curlength;
		}
	}

	free(tmp);
	return maxlength;
}

int main()
{
    char *s = "JQJQKAQ312";

    int k = lengthOfLongestSubstring(s);
    printf("k=%d\n", k);

    return 0;
}

其他

  • 嵌入式开发:ARM、X86、Linux

  • 哈希函数特性:不可逆,输出固定长度的值

  • unorderd_set

参考:C++常用语法——unordered_set

unordered_set 容器,可直译为“无序 set 容器”。即 unordered_set 容器和 set 容器很像,唯一的区别就在于 set 容器会自行对存储的数据进行排序,而 unordered_set 容器不会

#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;

int main()
{
    //创建一个空的unordered_set容器
    unordered_set<string> uset;
    
    //给 uset 容器添加数据
    uset.insert("http://c.biancheng.net/java/");
    uset.insert("http://c.biancheng.net/c/");
    uset.insert("http://c.biancheng.net/python/");
    //查看当前 uset 容器存储元素的个数
    cout << "uset size = " << uset.size() << endl;
    //遍历输出 uset 容器存储的所有元素
    for (auto iter = uset.begin(); iter != uset.end(); ++iter) {
        cout << *iter << endl;
    }
    return 0;
}

与面试日记|小米汽车相似的内容:

面试日记|小米汽车

> 小米汽车 ## 问题 ![image-20230403205932882](https://markdown-1259209976.cos.ap-beijing.myqcloud.com/uPic/2023/04/03/image-20230403205932882.png) ## 方法 思路:

C++算法之旅、09 力扣篇 | 常见面试笔试题(上)算法小白专用

算法学习笔记,记录容易忘记的知识点和难题。详解时空复杂度、50道常见面试笔试题,包括数组、单链表、栈、队列、字符串、哈希表、二叉树、递归、迭代、分治类型题目,均带思路与C++题解

面试日记|信雅达和银行卡中心

> 密码研发和隐私计算研发 ## MAC和Hash的区别? + MAC:消息验证码 + Hash:消息摘要/杂凑 ![image-20230314225004958](https://markdown-1259209976.cos.ap-beijing.myqcloud.com/uPic/2023/

面试日记|汉德

> 上海汉德 ‼️今天面试遇到一个好玩的事,记录一下,面试流程: + 做一个逻辑推理题 + 自我介绍 + 自选题目,给出方案设计 好玩的事是逻辑推理和方案设计: 1、逻辑推理 ![image-20230402152739637](https://img2023.cnblogs.com/blog/19

面试日记|明朝万达

+ 明朝万达 接口功能:C实现读取TXT文件,并将数字和字母单独提出来。 程序: ```C #include int j=0,k=0; void read_TXT(const char *path,char *string,char *num) { char file; FILE* fpRead =

面试日记|同盾

隐私计算算法工程师助理 公司介绍 官网:地址 同盾科技是以大数据,云计算和人工智能为基础的智能决策与分析大数据&AI公司,我们服务金融,政企,互联网,物流等行业 目前融资到D+轮,现有员工近1300人,总部在杭州,北上广深成都,西安新加坡等地有分支机构 面试问题 1、自我介绍 2、介绍一下发表的论文

面试日记 | 东兴证券

> 2023年校招,信息安全工程师 ## 初面 + 自我介绍 + 岗位了解 + 研究方向(毕业论文,毕业设计) + 要用通俗的语言解释研究方向 + 研究方向的应用 + 个人优缺点 + 岗位关注点 ## 终面 + 自我介绍(1分钟):先说序号+姓名 + 时事热点抢答(排队还贷) + 自由提问:个人研究

面试日记 | 金证股份

> 2023年校招,区块链开发工程师 ## 初面 + 自我介绍 + 对区块链有什么了解? + Merkel树结构在区块链中的作用?零知识证明的应用 + 研究内容:创新点(自己设计的算法) + 还有什么问题 + 职业规划 + 对公司有什么了解? ## 二面 - 密码 - - 擅长使用哪一个密码库? -

面试日记 | 商密检测中心

> 2023年校招,密码基础研究 ## 初面 - 三分钟自我介绍(实习、家庭、项目等) - 参加的比赛中自己的工作 - 关于同态密码(安全性分析、基于的困难问题、如何测评效率等) - 熟悉的编程语言 - 有什么问题? ## 笔试 > 开卷,做完发邮箱 + 综合能力测试题 + 专业能力附加题 ## 二

面试日记 | 移动咪咕

> 2023年校招,前沿技术规划 ## 笔试 移动校招统一笔试 ## 一面 > 群面,上午 + 逐个自我介绍 + 提问,逐个回答 + 最讨厌的人 + 比较关注的前言技术 + 抢答 + 近期做过的自豪的事 ## 二面 > 单人,下午 + 自我介绍 + 介绍一下隐私计算 + 介绍一下对元宇宙的理解 +