【C++】 —— 笔试刷题day_16

【C++】 —— 笔试刷题day_16
刷题_day16,继续加油啊

一、字符串替换

题目解析

在这里插入图片描述
这道题是一道简单的字符题目,题目给我们一个字符串A,和n表示A字符串的长度,再给出一个字符数组argm表示arg中是数据个数。

然我们在字符串A中找到%s然后替换成arg中的字符;

算法分析

这道题就非常简单简单了,我们直接在A中寻找%s,然后将arg中的字符替换即可。

当然这里没有必要在原字符串中进行操作,创建一个新的字符串ret即可。

这里需要注意:

A字符串中的%s的个数可能会小于arg中的字符数量,

代码实现

classStringFormat{public: string formatString(string A,int n, vector<char> arg,int m){// write code here string ret;int sz = A.size();int k =0;for(int i=0,j=1;j<sz;i++,j++){if(A[i]!='%'|| A[j]!='s') ret+=A[i];else{ ret+=arg[k++]; i++; j++;}}if(A[sz-2]!='%') ret+=A[sz-1];while(k<arg.size()) ret+=arg[k++];return ret;}};

二、神奇数

题目解析

在这里插入图片描述
这道题,给定我们一个区间[l , r],让我们找出来其中神奇数的个数;

**神奇数:**对于一个数x,使用它的某两位组成的一个两位数是一个质数,那这个数就是神奇数。

算法分析

对于这道题,思路就简单明了了,你就是暴力枚;枚举出来所有可能的两位数,判断是否是质数即可。

遍历区间[l , r],判断是否是神奇数,是就计数加一;

判断是否是神奇数:先将数的每一位存到一个数组中,然后枚举所有可能的两位数,判断这两位数是否是质数;如果是,这个数就是神奇数;如果不是,那就继续枚举,直到枚举完所有的。(枚举完所有的就表示这个数不是神奇数

判断是否是质数:(首先进行一下判断,如果x<2,这个数就不是质数)从2开始判断x是否能被整除,如果能那就不是质数,如果不能就继续遍历;遍历到sqrt(x)时遍历结束;(遍历到sqrt(x)就表示这个数是质数

代码实现

#include<iostream>#include<vector>#include<cmath>usingnamespace std;boolisprim(int x){if(x<2)returnfalse;for(int i =2;i<=sqrt(x);i++){if(x % i ==0)returnfalse;}returntrue;}intcheck(int n){//将n的每一位存到数组中 vector<int> num;while(n){ num.push_back(n%10); n/=10;}for(int i =0;i<num.size();i++){for(int j =0;j<num.size();j++){if(i!=j && num[i]!=0)if(isprim(num[i]*10+ num[j]))return1;}}return0;}intmain(){int l,r; cin>>l>>r;int ret =0;for(int i =max(10,l);i<=r;i++){ ret+=check(i);} cout<<ret<<endl;return0;}

三、DNA序列

题目解析

在这里插入图片描述
这里题目给我们应该字符串str,其中有A/C/G/T组成;还给了一个n

让我们在str中找到一个子串,这个子串长度为n,要求我们这个子串中有尽可能多的C/G

最后要我们输出这个子串(子串中C/G尽可能多)

算法分析

这道题,相信对题目比较敏感的朋友已经想到了做法,那就是滑动窗口

这里就不过多叙述了,直接来看思路:

这里呢 ,我们要找尽可能多数量的C/G,我们就需要一个count来记录区间[left , right]C/G的个数;然后用maxcount;来记录当前最多的C/G的数量,用于比较;

题目要求我们最后输出子串,所以我们记录一下最后子串的起始位置begin和长度len进窗口:如果A[right] == 'C' || A[right] == Gcount++判断:如果right - left - 1 > n,就表示当前区间长度大于n了,就要出窗口操作;出窗口:如果A[left] == 'C' || A[right] == 'G',就count--;**更新结果:**出窗口操作之后,如果区间长度等于n,并且当前区间内count小于maxcount,那就更新结果。
在这里插入图片描述

代码实现

#include<iostream>usingnamespace std;intmain(){ string str;int n; cin>>str>>n;int begin =-1,count =0,maxcount =0;for(int left =0,right =0;right<str.size();right++){if(str[right]=='C'||str[right]=='G') count++;while(right - left +1> n){if(str[left]=='C'|| str[left]=='G') count--; left++;}if(count > maxcount){ begin = left; maxcount = count;}} cout<<str.substr(begin,n)<<endl;return0;}

到这里本篇文章就结束了,继续加油

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws

Read more

腾讯云轻量服务器 + OpenClaw 部署全攻略:从购买到飞书接入

腾讯云轻量服务器 + OpenClaw 部署全攻略:从购买到飞书接入

在这个 AI 大爆发的时代,每个人都想拥有一个像贾维斯那样的私人助理。但现实往往是:要么受限于各种现成工具的条条框框,要么被复杂的服务器部署代码劝退。直到我遇到了 OpenClaw(曾用名 ClawdBot、Moltbot)。 配合腾讯云轻量应用服务器 (Lighthouse) 的一键部署镜像,整个过程比你想象中还要简单。今天这篇教程,我就手把手带你从买服务器开始,到接入飞书、企微等平台,彻底搞定属于你的 AI 管家。 一、 为什么推荐腾讯云轻量服务器? 很多小伙伴问,我可以在本地电脑跑 AI 助手吗?技术上当然可以,但你得保证电脑 24 小时开机,且有稳定的公网访问能力。相比之下,云服务器的优势太明显了: 1. 全天候在线:你的 AI 助理 24x7 随时待命。 2. 极简部署:腾讯云提供了 OpenClaw 专属镜像。这意味着你不需要去敲那些让人头晕的 Linux

By Ne0inhk
Flutter 组件 actions_toolkit_dart 适配鸿蒙 HarmonyOS 实战:自动化套件方案,构建 GitHub Actions 深度集成与跨端流水线治理架构

Flutter 组件 actions_toolkit_dart 适配鸿蒙 HarmonyOS 实战:自动化套件方案,构建 GitHub Actions 深度集成与跨端流水线治理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 actions_toolkit_dart 适配鸿蒙 HarmonyOS 实战:自动化套件方案,构建 GitHub Actions 深度集成与跨端流水线治理架构 前言 在鸿蒙(OpenHarmony)生态迈向全球化开源协作、涉及极大规模的跨端 CI/CD 流水线构建、多机型自动化兼容性测试及严苛的代码准入控制背景下,如何实现一套既能深度对接 GitHub Actions 核心底脚(Toolkits)、又能提供原生 Dart 编程感且具备工业级日志输出与状态管理的“自动化控制基座”,已成为决定应用研发迭代频率与交付质量稳定性的关键。在鸿蒙项目这类强调多模块(HAP/HSP)并行构建与分布式证书签名校验的环境下,如果 CI 脚本依然依赖大量零散的 Shell 拼接,由于由于环境变量的微差异,极易由于由于“脚本不可维护”导致鸿蒙应用在自动化发布环节频繁由于由于故障导致阻塞。

By Ne0inhk
Flutter 三方库 github_actions_toolkit 的鸿蒙化适配指南 - 实现 GitHub Actions 高效自动化任务构建、支持日志颜色修饰与核心工具集成

Flutter 三方库 github_actions_toolkit 的鸿蒙化适配指南 - 实现 GitHub Actions 高效自动化任务构建、支持日志颜色修饰与核心工具集成

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 github_actions_toolkit 的鸿蒙化适配指南 - 实现 GitHub Actions 高效自动化任务构建、支持日志颜色修饰与核心工具集成 前言 在进行 Flutter for OpenHarmony 的工程化 CI/CD(持续集成与交付)构建时,利用 GitHub Actions 进行自动化测试和流水线发布是主流选择。github_actions_toolkit 是一个专为编写非 Web 类 Action 脚本设计的工具集,它能让你在 Dart 脚本中轻松调用 Actions 的核心功能(如日志分级输出、设置导出变量等)。本文将探讨如何利用该库提升鸿蒙项目的自动化构建效率。 一、原理解析 / 概念介绍

By Ne0inhk
TCP 服务器如何支持高并发?单进程、多进程、多线程模型详解

TCP 服务器如何支持高并发?单进程、多进程、多线程模型详解

在上一篇博客中,我们基于 UDP 实现了一个简单的群聊模型。 今天,我们正式进入 TCP 网络编程,实现一个最经典的功能 —— 🧾 服务器回显(Echo Server) 就是我们发送的消息,服务器不做处理,直接给我们返回即可。 一、TCP 服务器整体流程 一个最基础的 TCP 服务器,需要经历以下步骤: socket() bind() listen() accept() read()/write() close() 流程图可以理解为: 创建套接字 → 绑定端口 → 开始监听 → 等待客户端连接 → 收发数据 → 关闭连接 我们都知道TCP是连接的,可靠的传输层协议,所以每一个客户端在访问服务器的时候都会建立连接(也就是我们课本上说的三次握手),在客户端没有申请建立连接的时候,服务器要始终保持这监听状态(调用系统调用接口listen)(因为用户可是一天24小时内任意时间都有可能对服务器进行访问,所以服务器必须始终保持这监听状态,这就好比我们半夜不睡觉,就是刷抖音短视频,我们可从来没有打不开抖音的时候,这就是因为服务器保持着监听状态,即使你半夜进行访问,

By Ne0inhk