当前位置: 首页 > news >正文

突破编程_C++_面试(基础知识(13))

面试题45:C++中的字符串如何存储

在C++中,字符串可以通过多种方式存储,但最常见和推荐使用的方式是通过 std::string 类,该类位于 <string> 头文件中。std::string 是一个类模板的实例,通常用于存储字符数组,特别是char类型的数组。
std::string 内部使用动态分配的内存来存储字符数据,这样可以灵活地处理不同长度的字符串。这种动态分配的内存管理使得 std::string 能够自动处理字符串的创建、复制、赋值、拼接和销毁,而无需手动管理内存。
std::string的内部结构包含以下几个部分:
(1)字符数组:存储实际的字符数据,包括字符串的字符内容。
(2)长度信息:通常是一个整数,记录字符串中字符的数量(不包括终止字符’\0’)。
(3)容量信息:指示已分配内存的大小,这通常大于或等于字符串的实际长度,以便在添加更多字符时不需要频繁重新分配内存。
当创建一个 std::string 对象时,它会根据需要自动分配足够的内存来存储字符串。例如:

std::string str = "abc123";

在这个例子中, str 是一个 std::string 对象,它包含字符串 “abc123” 。str 内部会自动分配足够的内存来存储这 7 个字符(包括结束字符’\0’),以及使用成员变量存储的字符串信息(如长度和容量)。
使用 std::string 的好处之一是它自动处理内存管理,减少了内存管理错误(如内存泄漏或越界访问)的风险。此外,std::string 还提供了丰富的成员函数,用于执行常见的字符串操作,如拼接、查找、替换等。
除了 std::string ,C++还提供了 std::wstring 用于存储宽字符( wchar_t 类型)的字符串,可以用于处于多种字符集(如 utf-8 、 gb2312 等)。

面试题46:std::string 如何管理内存

std::string 在 C++ 中管理内存的方式是通过其内部实现的自动内存管理机制。这通常涉及到动态内存分配和释放,以及对内存使用的优化。以下是 std::string 如何管理内存的一些关键点:
(1)动态内存分配:当创建 std::string 对象或向现有字符串添加内容时,如果需要更多空间来存储字符, std::string 会动态地分配内存。这通常涉及到调用 new (或相应的内存分配函数)来分配足够大小的内存块。
(2)内存增长策略:当 std::string 需要扩展其内部缓冲区以容纳更多字符时,它通常会分配比当前需要更大的内存块。这是为了减少频繁的内存重新分配和复制操作,从而提高性能。这种策略称为内存预留( memory reservation )。
(3)内存释放:当 std::string 对象被销毁或缩小其大小时,它会释放不再需要的内存。这通常是通过调用 delete[](或相应的内存释放函数)来完成的。然而,值得注意的是,std::string通常不会立即释放所有内存回到系统,而是保留一些内存以便将来使用,这被称为内存池( memory pooling )。
(4)字符串拷贝和赋值:当 std::string 对象被拷贝或赋值时, std::string 会创建一个新的内存块来存储字符串内容,而不是共享内存。这是为了避免对原始字符串的修改影响到副本。
(5)内存效率: std::string 的设计通常旨在提供合理的内存使用效率。例如,当缩小字符串大小时,std::string 可能不会立即释放所有额外内存,而是保留一部分以便未来增长。这减少了频繁的内存分配和释放操作,从而提高了性能。
(6)异常安全性: std::string 的内存管理实现通常是异常安全的,这意味着即使在内存分配失败的情况下,它也不会导致程序崩溃或数据损坏。
(7)RAII原则: std::string 遵循资源获取即初始化( Resource Acquisition Is Initialization , RAII )原则,这意味着其内存管理与其生命周期紧密相关。当std::string对象超出其作用域或被销毁时,其内存也会被自动释放。
总的来说,std::string通过动态内存分配、内存增长策略、内存释放和其他优化技术来管理其内存。这使得 std::string 成为处理字符串时高效且安全的选择。

面试题47:如何处理大量的字符串拼接操作

如果处理大量的字符串拼接操作,或者每次拼接的字符串都非常大,那么性能可能会成为一个问题。在这种情况下,可以考虑以下优化策略:
使用 std::stringstream :
std::stringstream 允许像使用流一样的方式拼接字符串。它内部使用优化过的缓冲区来存储字符串,从而减少内存分配和复制的次数。

std::stringstream ss;  
ss << "abc" << "123" << "def" << std::endl;  
std::string str = ss.str();

预先分配内存:
如果知道最终字符串的大致大小,可以使用 std::string 的 reserve 成员函数预先分配足够的内存。这可以避免在拼接过程中频繁地重新分配内存。
注意拼接需要使用 append() 方法,使用该方法时,字符串的拼接是在现有 std::string 对象的内存块中进行的,这意味着不需要分配新的内存块来存储结果。因此,在需要频繁拼接字符串的情况下,使用 append() 函数通常比使用 + 运算符更高效。

std::string result;  
result.reserve(estimated_final_size);  
// 然后使用 append() 进行拼接操作

避免小字符串拼接:
如果需要拼接大量的小字符串,可以考虑将它们先存储在一个容器中(如std::vectorstd::string),然后再一次性拼接起来。这样可以减少内存分配和复制的次数。
自定义字符串处理:
对于特定的应用场景,可以考虑实现自定义的字符串处理函数,例如使用特定的算法或数据结构来优化拼接操作。

面试题48:描述 std::string 与其他类型的相互转换

std::string 可以与其他数据类型进行相互转换。以下是一些常见的转换示例:
转换为整数类型
使用 std::stoi、std::stol、std::stoul 等函数可以将 std::string 转换为整数类型(如 int、long、unsigned long 等)。如下为样例代码:

std::string str = "12345";  
int val = std::stoi(str); // 将字符串转换为整数

如果字符串不能被解析为有效的整数,std::stoi 等函数将抛出 std::invalid_argument 异常,或者如果转换结果超出了目标类型的表示范围,将抛出 std::out_of_range 异常。
转换为浮点数类型
使用 std::stof、std::stod 等函数可以将 std::string 转换为浮点数类型(如 float、double)。如下为样例代码:

std::string str = "3.14159";  
float val1 = std::stof(str); // 将字符串转换为单精度浮点数
double val2 = std::stod(str); // 将字符串转换为双精度浮点数

同样,如果字符串不能被解析为有效的浮点数,这些函数将抛出异常。
从整数或浮点数转换为 std::string
使用 std::to_string 函数可以将整数或浮点数转换为 std::string 。如下为样例代码:

int val1 = 12345;  
std::string str1 = std::to_string(val1); // 将整数转换为字符串  double val2 = 3.14159;  
std::string str2 = std::to_string(val2); // 将双精度浮点数转换为字符串

从 std::string 转换为字符数组(C字符串)
使用 c_str() 方法可以将 std::string 转换为字符数组(C字符串)。如下为样例代码:

std::string str = "abc123";  
const char* chStr = str.c_str(); // 获取指向字符串内容的指针

注意:c_str() 返回的是一个指向 std::string 内部数据的常量指针,该数据在 std::string 对象生命周期内有效。如果需要在 std::string 对象之外保留这个字符串,则需要使用 memcpy 做字符串复制。
从字符数组(C字符串)转换为 std::string
可以直接将C风格的字符串(字符数组)赋值给 std::string。如下为样例代码:

const char* chStr = "abc123";  
std::string str(chStr); // 使用C字符串初始化 std::string
std::string str2;  
str2.assign(chStr); // 也可以使用 assign() 方法

面试题49:std::string 的 swap 方法为什么比传统的字符串交换更快

std::string 的 swap 成员函数比传统的字符串交换更快,主要原因是它通常只交换两个字符串对象的内部指针,而不是实际复制字符串内容。这种操作通常被称为无开销交换或无拷贝交换。
传统的字符串交换通常涉及以下步骤:
(1)分配足够的内存来存储其中一个字符串的内容。
(2)将第一个字符串的内容复制到新分配的内存中。
(3)释放第一个字符串原本占用的内存。
(4)将第二个字符串的内容复制到第一个字符串原本占用的内存中。
(5)释放第二个字符串原本占用的内存。
(6)将新分配的内存地址赋给第二个字符串。
这个过程涉及多次内存分配和释放,以及字符串内容的复制,因此效率较低。
相比之下,std::string 的 swap 成员函数只是交换了两个字符串对象内部的指针,不涉及任何内存分配、释放或内容复制。这种操作的开销非常小,因此通常比传统的字符串交换更快。

面试题50:编程实例题:替换所有子字符串(replace() 方法)

std::string 类没有内置的直接替换所有子字符串的方法。可以在一个循环中多次调用 find() 和 replace() 方法,直到 find () 方法返回 std::string::npos ,表示没有更多的匹配项。如下为实现代码:

#include <iostream>  
#include <string>  void replaceAll(std::string& str, const std::string& strFrom, const std::string& strTo) 
{size_t pos = 0;while ((pos = str.find(strFrom, pos)) != std::string::npos){str.replace(pos, strFrom.length(), strTo);pos += strTo.length(); // 更新搜索起始位置  }
}int main() 
{std::string str = "abcdefabcdef";replaceAll(str, "abc", "123");// str 现在为 "123def123def"  return 0;
}

面试题51:编程实例题:分割子字符串(split() 方法)

std::string 没有内置的 split 方法来分割字符串。可以使用 std::istringstream 以及 std::getline 函数来分割字符串。如下为实现代码:

#include <iostream>  
#include <sstream>  
#include <vector>  
#include <string>  std::vector<std::string> split(const std::string& str, char delimiter) 
{std::vector<std::string> tokens;std::istringstream tokenStream(str);std::string token;while (std::getline(tokenStream, token, delimiter)) {tokens.push_back(token);}return tokens;
}int main() {std::string str = "abc,123,def";char delimiter = ',';std::vector<std::string> tokens = split(str, delimiter);// tokens 现在为 {"abc","123","def"}return 0;
}

相关文章:

突破编程_C++_面试(基础知识(13))

面试题45&#xff1a;C中的字符串如何存储 在C中&#xff0c;字符串可以通过多种方式存储&#xff0c;但最常见和推荐使用的方式是通过 std::string 类&#xff0c;该类位于 <string> 头文件中。std::string 是一个类模板的实例&#xff0c;通常用于存储字符数组&#x…...

掌握C语言文件操作:从入门到精通的完整指南!

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 什么是文件 文件其实是指一组相关数据的有序集合。这个数据集有一个名称&a…...

JavaEE作业-实验二

目录 1 实验内容 2 实验要求 3 思路 4 核心代码 5 实验结果 1 实验内容 实现两个整数求和的WEB程序 2 实验要求 ①采用SpringMVC框架实现 ②数据传送到WEB界面采用JSON方式 3 思路 ①创建一个SpringMVC项目&#xff0c;配置好相关的依赖和配置文件。 ②创建一个Con…...

2月8号作业

Sqlite3系统命令 .quit 退出数据库 .exit 退出数据库 .help 显示帮助信息&#xff0c;获取所有系统命令 .table 查看当前数据库下的所有表格 .schema 查看表的结构 Sqlite3语句 创建表格&#xff1a; create table 表名 (字段名 数据类型, 字段名 数据类型); create table if…...

08:K8S资源对象管理|服务与负载均衡|Ingress

K8S资源对象管理&#xff5c;服务与负载均衡&#xff5c;Ingress DaemonSet控制器污点策略容忍容忍污点 其他资源对象Job资源对象 有限生命周期CronJob资源对象 集群服务服务自动发现headless服务 实现服务定位与查找 服务类型 Ingress插件 发布服务的方式 DaemonSet控制器 Da…...

HarmonyOS 横屏调试与真机横屏运行

我们有些程序 需要横屏才能执行出效果 我们在预览器上 点击如下图指向出 就进入一个横屏调试了 但 我们真机运行 依旧是竖着的 我们如下图 找到 module.json5 在 abilities 下面 第一个对象 最下面 加上 "orientation": "landscape"然后 我们再真机运…...

Javaweb基础-tomcat,servlet

一.配置文件基础&#xff1a; properties配置文件&#xff1a; 由键值对组成 键和值之间的符号是等号 每一行都必须顶格写&#xff0c;前面不能有空格之类的其他符号 xml配置文件&#xff1a;&#xff08;xml语法HTML语法HTML约束&#xff09;xml约束-DTD / Schema DOM4…...

HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-中断管理

目录 一、中断基础概念二、中断管理使用说明三、中断管理模块接口四、代码分析&#xff08;待续...&#xff09;坚持就有收获 一、中断基础概念 在程序运行过程中&#xff0c;出现需要由 CPU 立即处理的事务时&#xff0c;CPU 暂时中止当前程序的执行转而处理这个事务&#xf…...

【开源】JAVA+Vue+SpringBoot实现就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…...

Stable Diffusion 模型下载:DreamShaper XL(梦想塑造者 XL)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型&#xff0c;可以生成写实、原画、2.5D 等…...

【机器学习】数据清洗之处理异常点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…...

JavaScript学习之旅10------掌握jQuery:实用应用案例深度解析

目录 写在开头1. jQuery基础知识回顾1.1. 选择器1.2. 事件1.3. 效果1.4. DOM操作1.5. AJAX 2. 实用应用案例分析2.1. 动态内容加载2.2. 表单验证2.3. 图像滑动门效果2.4. 创建动态导航菜单 3. 高级技巧与最佳实践3.1. 优化jQuery代码的性能3.2. jQuery插件的使用和自定义3.3. j…...

017_逆向工程搭建和使用

文章目录 启动代码生成器然后访问第一步处理:前端代码删除逆向生成的代码中有好多东西要引入创建gulimall-common插曲:修改模块名dao层entity层service层controllerRQuery文件当中的报错☆ 调整renren-generator的逆向工程逆向生成代码当中有什么总结...

位运算+leetcode(1)

基础 1.基础知识 以下都是针对数字的二进制进行操作 >> 右移操作符<< 左移操作符~ 取反操作符 & 有0就是0&#xff0c;全一才一 | 有一才一 &#xff0c;全0才0^ 相同为0&#xff0c;相异为1 异或( ^ )运算的规律 a ^ 0 a a ^ a 0a ^ b ^ c a ^ (b …...

如何在 JavaScript 中比较两个日期 – 技术、方法和最佳实践

在 JavaScript 中&#xff0c;您可以使用 date 对象有效地处理应用程序中的日期、时间和时区。 Date 对象可帮助您有效地操作数据、处理各种与日期相关的任务&#xff0c;并在创建实际应用程序时执行一些计算。 &#xff08;本文内容参考&#xff1a;java567.com&#xff09;…...

【More Effective C++】条款17:考虑使用lazy evaluation

含义&#xff1a;将计算拖延到必须计算的时候&#xff0c;以下为4个场景 优点&#xff1a;避免不必要的计算&#xff0c;节省成本 缺点&#xff1a; 管理复杂性&#xff1a;可能会增加代码复杂性&#xff0c;特别是在多线程环境中需要正确处理同步和并发问题。性能开销&…...

深入探索Pandas读写XML文件的完整指南与实战read_xml、to_xml【第79篇—读写XML文件】

深入探索Pandas读写XML文件的完整指南与实战read_xml、to_xml XML&#xff08;eXtensible Markup Language&#xff09;是一种常见的数据交换格式&#xff0c;广泛应用于各种应用程序和领域。在数据处理中&#xff0c;Pandas是一个强大的工具&#xff0c;它提供了read_xml和to…...

如何在我们的模型中使用Beam search

在上一篇文章中我们具体探讨了Beam search的思想以及Beam search的大致工作流程。根据对Beam search的大致流程我们已经清楚了&#xff0c;在这我们来具体实现一下Beam search并应用在我们的seq2seq任务中。 1. python中的堆&#xff08;heapq&#xff09; 堆是一种特殊的树形…...

PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证

文章目录 Openssl操系统默认的CA证书的公钥位置Nginx Https 自签证书1. 生成自签名证书和私钥2. 配置 Nginx 使用 HTTPS3. 重启 Nginx 服务4. 直接访问5. 不验证证书直接访问6. 使用server.crt作为ca证书验证服务端解决方法1&#xff1a;使用 --resolve 参数进行请求域名解析解…...

WebSocket原理详解

目录 1.引言 1.1.使用HTTP不断轮询 1.2.长轮询 2.websocket 2.1.概述 2.2.websocket建立过程 2.3.抓包分析 2.4.websocket的消息格式 3.使用场景 4.总结 1.引言 平时我们打开网页&#xff0c;比如购物网站某宝。都是点一下列表商品&#xff0c;跳转一下网页就到了商品…...

在面试中如何回复擅长vue还是react

当面试官问及这个问题的时候&#xff0c;我们需要思考面试官是否是在乎你是掌握vue还是react吗&#xff1f;&#xff1f;&#xff1f; 在大前端的一个环境下&#xff0c;当前又有AI人工智能的加持辅助&#xff0c;我们是不是要去思考企业在进行前端岗位人员需求的时候&#xf…...

使用Vue.js输出一个hello world

导入vue.js <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> 创建一个标签 <div id"app">{{message}}</div> 接管标签内容&#xff0c;创建vue实例 <script type"text/javascript">va…...

15 ABC基于状态机的按键消抖原理与状态转移图

1. 基于状态机的按键消抖 1.1 什么是按键&#xff1f; 从按键结构图10-1可知&#xff0c;按键按下时&#xff0c;接点&#xff08;端子&#xff09;与导线接通&#xff0c;松开时&#xff0c;由于弹簧的反作用力&#xff0c;接点&#xff08;端子&#xff09;与导线断开。 从…...

λ-矩阵的多项式展开

原文链接 定义. 对于 m n m \times n mn 的 λ \lambda λ-矩阵 A ( λ ) [ a 11 ( λ ) . . . a 1 n ( λ ) ⋮ ⋮ a m 1 ( λ ) . . . a m n ( λ ) ] \mathbf{A}(\lambda)\begin{bmatrix} a_{11}(\lambda) & ... & a_{1n}(\lambda)\\ \vdots & & \vdo…...

如何在PDF 文件中删除页面?

查看不同的工具以及解释如何在 Windows、Android、macOS 和 iOS 上从 PDF 删除页面的步骤&#xff1a; PDF 是最难处理的文件格式之一。曾经有一段时间&#xff0c;除了阅读之外&#xff0c;无法用 PDF 做任何事情。但是今天&#xff0c;有许多应用程序和工具可以让您用它们做…...

蓝桥杯官网填空题(质数拆分)

问题描述 将 2022 拆分成不同的质数的和&#xff0c;请问最多拆分成几个&#xff1f; 答案提交 本题为一道结果填空的题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将结果输出即可。 运行限制 import java.util.Scanner;public class Main {static int …...

【数据结构】二叉树的顺序结构及链式结构

目录 1.树的概念及结构 1.1树的概念 1.2树的相关概念 ​编辑 1.3树的表示 1.4树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2.二叉树概念及结构 2.1二叉树的概念 2.2现实中的二叉树 ​编辑 2.3特殊的二叉树 2.4二叉树的性质 2.5二叉树的存储结…...

海外IP代理:解锁网络边界的实战利器

文章目录 引言&#xff1a;正文&#xff1a;一、Roxlabs全球IP代理服务概览特点&#xff1a;覆盖范围&#xff1a;住宅IP真实性&#xff1a;性价比&#xff1a;在网络数据采集中的重要性&#xff1a; 二、实战应用案例一&#xff1a;跨境电商竞品分析步骤介绍&#xff1a;代码示…...

如何写好一个简历

如何编写求职简历 论Java程序员求职中简历的重要性 好简历的作用 在求职过程中&#xff0c;一份好的简历是非常重要的&#xff0c;它甚至可以直接决定能否被面试官认可。一份出色或者说是成功的个人简历&#xff0c;最根本的作用是能让看这份简历的人产生一定要见你的强烈愿…...

【AutoML】AutoKeras 进行 RNN 循环神经网络训练

由于最近这些天都在人工审查之前的哪些问答数据&#xff0c;所以迟迟都没有更新 AutoKeras 的训练结果。现在那部分数据都已经整理好了&#xff0c;20w 的数据最后能够使用的高质量数据只剩下 2k。这 2k 的数据已经经过数据校验并且对部分问题的提问方式和答案内容进行了不改变…...

H12-821_74

74.在某路由器上查看LSP&#xff0c;看到如下结果&#xff1a; A.发送目标地址为3.3.3.3的数据包时&#xff0c;打上标签1026&#xff0c;然后发送。 B.发送目标地址为4.4.4.4的数据包时&#xff0c;不打标签直接发送。 C.当路由器收到标签为1024的数据包&#xff0c;将把标签…...

有趣儿的组件(HTML/CSS)

分享几个炫酷的组件&#xff0c;起飞~~ 评论区留爪&#xff0c;继续分享哦~ 文章目录 1. 按钮2. 输入3. 工具提示4. 单选按钮5. 加载中 1. 按钮 HTML&#xff1a; <button id"btn">Button</button>CSS&#xff1a; button {padding: 10px 20px;text-tr…...

1、深度学习环境配置相关下载地址整理(cuda、cudnn、torch、miniconda、pycharm、torchvision等)

一、深度学习环境配置相关&#xff1a; 1、cuda&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive 2、cudnn&#xff1a;https://developer.nvidia.com/rdp/cudnn-archive 4、miniconda&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?C…...

Spring Boot3自定义异常及全局异常捕获

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 目的 主要步骤 定义自定义异常类 创建全局异常处理器 手动抛出自定义异常 前置条件 已经初始化好一个…...

【python】网络爬虫与信息提取--Beautiful Soup库

Beautiful Soup网站&#xff1a;https://www.crummy.com/software/BeautifulSoup/ 作用&#xff1a;它能够对HTML.xml格式进行解析&#xff0c;并且提取其中的相关信息。它可以对我们提供的任何格式进行相关的爬取&#xff0c;并且可以进行树形解析。 使用原理&#xff1a;它能…...

谷歌浏览器,如何将常用打开的网站创建快捷方式到电脑桌面?

打开谷歌浏览器&#xff0c;打开想要创建的快捷方式的网页 点击浏览器右上角的三个点&#xff1a; 点击选择【更多工具】 选择【创建快捷方式】 然后&#xff0c;在浏览器上方会弹出一个框&#xff0c;让命名此创建的快捷方式的名称 命名好之后&#xff0c;再点击【创…...

产品经理面试题解析:业务架构是通往成功的关键吗?

大家好&#xff0c;我是小米&#xff01;今天我要和大家聊的是产品经理面试中的一个热门话题&#xff1a;“业务架构”&#xff01;相信不少小伙伴在准备面试的时候都会遇到这个问题&#xff0c;究竟什么是业务架构&#xff1f;它又与产品经理的工作有着怎样的关系呢&#xff1…...

【蓝桥杯】灭鼠先锋

一.题目描述 二.解题思路 博弈论&#xff1a; 只能转移到必胜态的&#xff0c;均为必败态。 可以转移到必败态的&#xff0c;均为必胜肽。 最优的策略是&#xff0c;下一步一定是必败态。 #include<iostream> #include<map> using namespace std;map<string,bo…...

2024年华为OD机试真题-求字符串中所有整数的最小和-Python-OD统一考试(C卷)

题目描述: 输入字符串s,输出s中包含所有整数的最小和 说明 1. 字符串s,只包含 a-z A-Z +- ; 2. 合法的整数包括 1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102 2)负整数 负号 - 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023 输入描述: 包含…...

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成&#xff0c;那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…...

fluent脱硝SCR相对标准偏差、氨氮比、截面速度计算

# -*- coding: utf-8 -*- """ Created on Wed Sep 20 20:40:30 2023 联系QQ:3123575367&#xff0c;专业SCR脱硝仿真。 该程序用来处理fluent通过export-solution-ASCII-Space导出的数据&#xff0c;可计算标准偏差SD、相对标准偏差RSD,适用于求解平面的相对均匀…...

Codeforces Round 925 (Div. 3)(A~E)

题目暂时是AC&#xff0c;现在是Hack阶段&#xff0c;代码仅供参考。 A. Recovering a Small String 题目给出的n都可以由字母来组成&#xff0c;比如4可以是aab&#xff0c;字母里面排第一个和第二个&#xff0c;即1124。但是会歧义&#xff0c;比如aba为1214&#xff0c;也是…...

@RequestBody、@RequestParam、@RequestPart使用方式和使用场景

RequestBody和RequestParam和RequestPart使用方式和使用场景 1.RequestBody2.RequestParam3.RequestPart 1.RequestBody 使用此注解接收参数时&#xff0c;适用于请求体格式为 application/json&#xff0c;只能用对象接收 2.RequestParam 接收的参数是来自HTTP 请求体 或 请…...

LeetCode、1143. 最长公共子序列【中等,二维DP】

文章目录 前言LeetCode、1143. 最长公共子序列【中等&#xff0c;二维DP】题目链接与分类思路2022年暑假学习思路及题解二维DP解决 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者…...

162基于matlab的多尺度和谱峭度算法对振动信号进行降噪处理

基于matlab的多尺度和谱峭度算法对振动信号进行降噪处理&#xff0c;选择信号峭度最大的频段进行滤波&#xff0c;输出多尺度谱峭度及降噪结果。程序已调通&#xff0c;可直接运行。 162 matlab 信号处理 多尺度谱峭度 (xiaohongshu.com)...

Android Studio六大基本布局的概览和每个布局的关键特性以及实例分析

1. 线性布局 (LinearLayout) 描述: 线性布局是一种按指定方向(水平或垂直)排列其子视图的布局容器。通过android:orientation属性可设置为horizontal或vertical。 关键属性: android:orientation: 指定布局方向。android:layout_weight: 子视图权重,用于分配剩余空间。示…...

【go语言】一个简单HTTP服务的例子

一、Go语言安装 Go语言&#xff08;又称Golang&#xff09;的安装过程相对简单&#xff0c;下面是在不同操作系统上安装Go语言的步骤&#xff1a; 在Windows上安装Go语言&#xff1a; 访问Go语言的官方网站&#xff08;golang.org&#xff09;或者使用国内镜像站点&#xff0…...

LeetCode Python - 15.三数之和

目录 题目答案运行结果 题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可…...

C#中implicit和explicit

理解: 使用等号代替构造函数调用的效果以类似重载操作符的形式定义用于类型转换的函数前者类型转换时候直接写等号赋值语法,后者要额外加目标类型的强制转换stirng str -> object o -> int a 可以 int a (int)(str as object)转换通过编译,但没有转换逻辑所以运行会报错…...

探讨java系统中全局唯一ID实现方案

为什么需要全局唯一ID 我们这里引用美团 Leaf 的场景介绍&#xff1a;在复杂分布式系统中&#xff0c;往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中&#xff0c;数据日渐增长&#xff0c;对数据分库分表后需要有一…...