首页 > 其他分享 >面试-日记2

面试-日记2

时间:2023-04-04 22:15:08浏览次数:45  
标签:容器 set int unordered 面试 uset include 日记

面试-经验2【小米汽车】

问题

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;
}

标签:容器,set,int,unordered,面试,uset,include,日记
From: https://www.cnblogs.com/pam-sh/p/17288064.html

相关文章

  • 美团面试题目以及解答20200424
    一面:集合有哪些:List(ArrayList Linklist)set(SetTreesetHashset)map(HashmapcurrentHashmaphashtable)arraylist和linkedlist区别一个是基于数组的实现一个是基于的链表的实现hashmap怎么扩容(多线程扩容为什么会死循环),put过程出现的是链表的闭环。concurrentHashMap1.7和1.......
  • Redis——面试问题集合
    那你能说说Redis是单线程的?Redis完全基于内存,绝大部分请求是纯粹的内存操作,非常迅速,数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度是O(1)。数据结构简单,对数据操作也简单。采用单线程,避免了不必要的上下文切换和竞争条件,不存在多线程导致的CPU切换......
  • 大数据云计算——hadoop的面试问题总结
    1.讲述HDFS上传⽂件和读⽂件的流程?HDFS上传流程,举例说明⼀个256M的⽂件上传过程(1)由客户端Client向NameNode节点发出请求;(2)NameNode向Client返回可以存数据的DataNode列表,遵循机架感应原则(把副本分别放在不同的机架,甚⾄不同的数据中⼼);(3)客户端⾸先根据返回的信息先将⽂......
  • 「刷起来」Go必看的进阶面试题详解
    勤学如春起之苗,不见其增日有所长;辍学如磨刀之石,不见其损日有所亏。本文的重点:逃逸分析、延迟语句、散列表、通道、接口。1.逃逸分析逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详......
  • 并发编程——JUC并发大厂面试问题
    摘要现如今,不管是应届毕业生还是工作了三五年之内的工程师,在面试招聘的时候JUC并发编程的是必须掌握的一个技能,否者你将会被面试官玩弄。本博文将整理有关于的JUC的大厂面试问题和答案。帮助大家在面试过程中能够回答面试官问题的一二。同时本人也总结相关的面试问题的在相关文档中......
  • Kafka——kafka的面试问题和解答
    摘要主要的是的针对于的kafka的面试的问题进行分析和总结PartitionRebalance分区再均衡1)消费者组中新添加消费者读取到原本是其他消费者读取的消息,(2)消费者关闭或崩溃之后离开群组,原本由他读取的partition将由群组里其他消费者读取,(3)当向一个Topic添加新的partition,会发生partitio......
  • #yyds干货盘点# LeetCode程序员面试金典:最接近的三数之和
    题目:给你一个长度为n的整数数组 nums 和一个目标值 target。请你从nums中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。 示例1:输入:nums=[-1,2,1,-4],target=1输出:2解释:与target最接近的和是2(-1+2+1=2)......
  • #yyds干货盘点# LeetCode面试题:二进制求和
    1.简述:给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。 示例 1:输入:a="11",b="1"输出:"100"示例 2:输入:a="1010",b="1011"输出:"10101"2.代码实现:classSolution{publicStringaddBinary(Stringa,Stringb){......
  • 2023年php面试题
                                      Php面试题1、isset和empty的区别?Isset测试变量是否被赋值,如果这个变量没被赋值,则返回false,empty是判断变量是否为空,当赋值为0,null,’’,返回true为真。他们之间最大的区别就是当一个变量被赋值0时,empty判......
  • #yyds干货盘点# LeetCode程序员面试金典:三数之和
    题目:给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。  示例1:输入:nums=[-1,0,1,2,-1,-4]输......