实习冲刺第二十一天

14.最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

思路详解:本题我们采用横向对齐的办法来解决,先记录第一个字符串称为比较字符串,然后拿后续的字符串依次比较,用两个索引来比较字符串是否相同,最后返回截取后的比较字符串即可。如果不理解可以看下面的图

代码详解:

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {string ans=strs[0];//首先记录数组第一个元素的字符串作为对比字符串for(int i=0;i<strs.size();i++)//遍历数组{auto&s=strs[i];//用s来记录遍历到的第一个字符串int j=0,k=0;//定义两个索引一个指向对比字符串一个指向当前字符串,他们都指向这两个字符串的第一个字符while(j<ans.size()&&k<ans.size())//两个索引都不允许越界{if(ans[j]!=s[k])break;//如果两个索引匹配到的字符不相等跳出循环j++;k++;//否则继续比较}ans=ans.substr(0,j);//比较结束直接截取字符串}return ans;//返回截取后的字符串即可}
};

面经:

1. c++函数的返回值在内存中的传递过程

返回值有四种返回方法,每种方法都有不同的传递过程

(1)值返回

复制:在函数返回时,会在调用者的栈帧上创建返回值的副本。

存储:这个副本存储在寄存器或者调用者的栈上。

使用:调用者可以使用这个副本。

int add(int a, int b) {return a + b;  // 返回值会被复制到调用者的栈帧或寄存器
}

(2)引用返回

不复制:函数不创建返回值的副本,而是直接返回对象的引用。

直接访问:调用者通过这个引用直接访问原始对象。

int& ref_add(int& a, int& b) {static int result = a + b;  // 使用静态变量存储结果return result;  // 返回引用
}

(3)指针返回

不复制:函数返回一个指向对象的指针。

间接访问:调用者通过这个指针间接访问对象。

int* ptr_add(int* a, int* b) {static int result = *a + *b;  // 使用静态变量存储结果return &result;  // 返回指针
}

(4)右值引用返回

这在移动语义和完美转发中非常有用,通常用于返回临时对象。

移动:返回临时对象时,其资源会被移动到调用者需要的地方。

不复制:通过移动构造函数或移动赋值运算符,避免了不必要的复制

MyClass&& createMyClass() {MyClass obj;// ...return move(obj);  // 返回右值引用
}

2. 什么是虚拟内存,为什么使用虚拟内存,虚拟内存可能比物理内存大吗

  • 虚拟内存是计算机系统内存管理的一个功能,它使得操作系统能够使用硬盘空间来模拟额外的RAM,即让程序认为它有比实际更多的内存可用。在虚拟内存系统中,每个程序都有一个连续的地址空间,称为虚拟地址空间
  • 使用虚拟内存有几个重要的理由:

        内存扩展:它允许系统运行比物理内存更大的程序。

        内存保护:每个进程都有自己的虚拟地址空间,这样可以防止一个进程访问或修改另一个进程的内存,增强了系统的稳定性和安全性。

        数据持久化:通过分页或交换技术,可以将不常用的内存页写入硬盘,从而腾出物理内存供其他程序使用。

        提高多任务处理能力:操作系统可以为多个进程提供看似独立的内存空间,使得它们可以并发运行。

        地址空间隔离:每个进程看到的内存地址都是从0开始的连续地址,这简化了程序的编写和移植。

  • 虚拟内存可能比物理内存大吗?

虚拟内存的大小是可以比物理内存大的。操作系统为每个进程分配的虚拟地址空间通常远大于物理RAM的大小。例如,在32位操作系统中,一个进程通常可以访问4GB的虚拟地址空间,而在64位操作系统中,虚拟地址空间的理论上限则大得多,远远超过了当前物理内存的大小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15845.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

游戏引擎学习第11天

视频参考:https://www.bilibili.com/video/BV1QLmDYQE3n 平台层的编写 应该是平台可移植什么的吧 逐项补充说明&#xff1a; 存档位置 在游戏或应用程序中&#xff0c;需要保存用户的进度、设置和数据&#xff0c;存档位置是指存放这些数据的文件夹路径。通常&#xff0c;平台…

炼码LintCode--数据库题库(级别:入门;数量:144道)--刷题笔记_01

目录 炼码LintCode数据库入门级别的笔记未完待续~~~ 炼码LintCode 数据库 入门级别的笔记 笔记如下&#xff0c;把所有涉及到的入门级别的知识点简单总结了一下。 以及一点点举一反三的写法。 增 INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);批量增 INSERT INT…

ab (Apache Bench)的使用

Apache Bench&#xff08;ab&#xff09;是一个用于基准测试HTTP Web服务器的命令行工具&#xff0c;广泛用于评估和优化Web服务器的性能。以下是关于Apache Bench的详细介绍&#xff0c;包括其功能、使用方法、常用参数和输出结果解析。 功能 性能测试&#xff1a;通过模拟多…

Cellebrite VS IOS18Rebooting

Cellebrite VS IOS18Rebooting我们想分享一些有关 iOS 18 重启“功能”的信息。在过去一周左右的时间里&#xff0c;人们对 iOS 18 中一项新的未记录功能产生了极大关注&#xff0c;该功能会导致设备在一段时间不活动后重新启动。 这意味着&#xff0c;如果设备在一定时间不活…

YZ系列工具之YZ10:VBA_梦幻图像

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套一部VBA手册&#xff0c;教程分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的…

企业网络安全管理策略

随着互联网和信息技术的飞速发展&#xff0c;网络安全威胁日益严峻&#xff0c;企业若不加强网络安全管理&#xff0c;可能会面临数据泄露、系统崩溃等严重后果。为了帮助企业有效应对这些挑战&#xff0c;以下是网络安全专家为您整理的五个策略&#xff0c;以提升网络安全防护…

如何禁用VMware虚拟网卡

安装VMWare虚拟机之后&#xff0c;会在本地创建两个虚拟网卡VMware Network Adapter VMnet1和VMware Network Adapter VMnet8&#xff0c;如果使用iNode客户端联网时会进行禁用多网卡检测&#xff0c;否则无法联网。因此&#xff0c;问题根源就在于虚拟网卡未禁用。 1、网络和…

11.13机器学习_贝叶斯和决策树

八 朴素贝叶斯分类 1 贝叶斯分类理论 假设现在我们有一个数据集&#xff0c;它由两类数据组成&#xff0c;数据分布如下图所示&#xff1a; 我们现在用p1(x,y)表示数据点(x,y)属于类别1(图中红色圆点表示的类别)的概率&#xff0c;用p2(x,y)表示数据点(x,y)属于类别2(图中蓝色…

Easyui ComboBox 数据加载完成之后过滤数据

Easyui ComboBox 数据加载完成之后过滤数据 需求 在ComboBox 下拉框中过滤包含"物联网"三个字的选项 现状 期望 实现方式 使用 combobox 的方法在加载时过滤 loadFilter 方式一&#xff1a;HTML中编写 <input id"enterpriseDepartmentCode" name&…

vue跳转传参

path 跳转只能使用 query 传参 ,name 跳转都可以 params &#xff1a;获取来自动态路由的参数 query &#xff1a;获取来自 search 部分的参数

div加4个角边框 css

效果&#xff1a; :root {--corner-color: #4ba7f5; } .data-item {position: relative;width: 100px;height: 60px;overflow: hidden;background: linear-gradient(to left, var(--corner-color), var(--corner-color)) left top no-repeat,linear-gradient(to bottom, var(-…

108. UE5 GAS RPG 实现地图名称更新和加载关卡

在这一篇里&#xff0c;我们将实现对存档的删除功能&#xff0c;在删除时会有弹框确认。接着实现获取玩家的等级和地图名称和存档位置&#xff0c;我们可以通过存档进入游戏&#xff0c;玩家在游戏中可以在存档点存储存档。 实现删除存档 删除存档需要一个弹框确认&#xff0…

CAN编程示例之socket CAN

socket CAN概念 socketcan子系统是在Linux下CAN协议(Controller Area Network)实现的一种实现方法。 CAN是一种在世界范围内广泛用于自动控制、嵌入式设备和汽车领域的网络技术。Linux下最早使用CAN的方法是基于字符设备来实现的&#xff0c;与之不同的是Socket CAN使用伯克利…

如何使用.bat实现检测电脑网络连接是否正常?

1、在电脑桌面新建一个记事本文档&#xff0c;将如下内容写进去&#xff1a; echo 正在检查中...echo off ping www.baidu.com -t pause:: 这是注释2、然后&#xff0c;保存一下&#xff0c;再把桌面此文件重命名为检查电脑外网连接.bat 3、双击此程序&#xff0c;可以检测…

C#高级:使用Invoke关键字通过 Type 类型调用指定的方法

demo如下&#xff1a; using System.Reflection; using System;public class Program {public class Calculator{public int Add(int a, int b){return a b;}}public class Student{public string Name { get; set; }}public class Example{// 泛型方法public string Generi…

VTK知识学习(8)-坐标系统

1、概述 计算机图形学里常用的坐标系统有4种&#xff1a; 1&#xff09;、Model坐标系统。定义模型时所采用的坐标系统&#xff0c;通常是局部的笛卡儿坐标系。 2&#xff09;、World坐标系统。是放置Actor的三维空间坐标系。 Actor&#xff08;vtkActor类&am…

MongoDB新版本安装配置教程(7.0.15版本-zip下载)

找了半天MongoDB新版本怎么解决没有mongo命令,都没有很好的解决方法 现在分享一下: 首先下载: 然后手动创建 data 和 log 两个文件夹 然后再系统变量配置环境变量 在data的目录下&#xff0c;创建一个db文件 然后:在bin目录下cmd执行: mongod --dbpath D:\MongoDB\data\db …

在Docker环境下为Nginx配置HTTPS

前言 配置HTTPS已经成为网站部署的必要步骤。本教程将详细介绍如何在Docker环境下为Nginx配置HTTPS&#xff0c;使用自签名证书来实现加密通信。虽然在生产环境中建议使用权威CA机构颁发的证书&#xff0c;但在开发测试或内网环境中&#xff0c;自签名证书是一个很好的选择。 …

QEMU 模拟器中运行的 Linux 系统

这两个文件通常用于在 QEMU 模拟器中运行的 Linux 系统&#xff0c;具体作用如下&#xff1a; 1. linux-aarch64-qemu.ext4&#xff1a; - **文件类型**&#xff1a;这是一个文件系统镜像文件&#xff0c;通常是 ext4 文件系统格式。 - **作用**&#xff1a;它包含了 Li…

Struts扫盲

Struts扫盲 这里的struts是struts1。以本文记录我的那些复习JavaEE的痛苦并快乐的晚上 Struts是什么 框架的概念想必大家都清楚&#xff0c;框架即“半成品代码”&#xff0c;是为了简化开发而设计的。一个项目有许多分层&#xff0c;拿一个MVC架构的Web应用来说&#xff0c;有…