AcWing、第 90 场周赛:4806. 首字母大写、4807. 找数字、4808. 构造字符串(C++)
目录
4806. 首字母大写
题目描述:
实现代码:
4807. 找数字
题目描述:
实现代码:
回溯(超时):
原理思路:
贪心:
原理思路:
4808. 构造字符串
问题描述:
实现代码与解析:
kmp:
原理思路:
4806. 首字母大写
题目描述:
给定一个由大小写字母构成的单词。
如果单词的首字母为小写字母,则请你将该首字母转换为对应大写字母。
如果单词的首字母为大写字母,则不做任何变化。
输出最终的单词。

实现代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{string s;cin >> s;if('A' <= s[0] && s[0] <= 'Z' ){cout << s <<endl;}else{s[0]-= 32;cout << s <<endl;}
}
或则直接这样写:
#include<bits/stdc++.h>
using namespace std;
int main()
{string s;cin >> s;s[0] = toupper(s[0]);cout << s <<endl;
}
4807. 找数字
题目描述:
给定一个正整数 m 和一个非负整数 s。
请你找到长度为 m且各位数字之和为 s 的最小和最大非负整数。
要求所求非负整数不得包含前导零。

实现代码:
回溯(超时):
#include <bits/stdc++.h>
using namespace std;
int result1 = 0;//求最大
int result2 = INT_MAX;//求最小
vector<int> path;
void backtrack1(int m, int s, int index)
{if (path.size() == m){int sum1 = 0;for (int i = 0; i < path.size(); i++){sum1 += path[i];}if (sum1 == s){int sum = 0;for (int i = 0; i < path.size(); i++){sum = sum * 10 + path[i];}if (sum > result1) result1 = sum;if (sum < result2) result2 = sum;} return;}int i = 0;if (path.empty()){i = 1;}for (i; i < 10 && i <= s - index; i++){path.push_back(i);backtrack1(m, s, index + i);path.pop_back();}
}int main()
{int min = INT_MAX;int max = 0;int m;//组成个数int s;//数cin >> m;cin >> s;//排除无解if(s > m * 9 || s == 0 && m > 1){cout << "-1 -1" << endl;}else{backtrack1(m, s, 0);cout << result2 << " " << result1 << endl; }return 0;
}
原理思路:
不要用回溯,数据过大就会超时的,比如100,100。就不解释这种方法了,而且麻烦又不对。
贪心:
#include <bits/stdc++.h>
using namespace std;int main()
{int m;//组成个数int s;//数cin >> m;cin >> s;//排除无解if((s > m * 9) || (s == 0 && m > 1)){cout << "-1 -1" << endl;}else{int sum = s;string a(m, ' ');//最大string b(m, ' ');//最小for(int i = 0; i < m; i++){int t = min(sum, 9);a[i] = t + '0';sum -= t; //用过的去掉}sum = s;//别忘了这里再给sum赋一下值for(int i = m - 1; i > 0; i--){int t = min(sum - 1, 9);//9 和 sum 之间取最小,给最高位至少留一个1,最高位不能为0,当然最高位不一定为1b[i] = t + '0';sum -= t;}b[0] = sum + '0';//最后把第一位添上cout << b <<" "<< a;}return 0;
}
原理思路:
求最大,就从第一位开始取,能取多大取多大,最大不是 9 么,但是肯定不能超过 sum 吧,所以就在这两个之间取最小就行。
求最小,正好相反,从最后一位开始取,记得sum要留一个1,因为首位不能为 0 吧,所以最小就为1,不过首位也不一定为 1,所以最后剩多少就直接赋值就行。
4808. 构造字符串
问题描述:
给定一个长度为 n 的由小写字母构成的字符串 t 以及一个整数 k。
请你构造一个字符串 s,要求:
- 字符串 s 恰好有 k 个子串等于字符串 t。
- 字符串 s 的长度尽可能短。
保证一定存在唯一解。

实现代码与解析:
kmp:
#include <bits/stdc++.h>
using namespace std;
int main()
{int n;string s;int k;cin >> n;cin >> k;cin >> s;string result = "";//求next数组vector<int> next(n, 0);int j = 0;next[0] = 0;for (int i = 1; i < n; i++){while (s[i] != s[j] && j > 0) j = next[j - 1];if (s[i] == s[j]) j++;next[i] = j;}string diff = s.substr(0, n - next[n - 1]);//后缀部分//把非后缀部分先重复 k 加上for (int i = 0; i < k ; i++){result += diff;}result += s.substr(0, next[n - 1]);//最后再加一个最长公共后缀cout << result << endl;
}
原理思路:
很简单啊,明显就是kmp,当然可能也有其他做法吧,kmp找出最长公共前后缀,然后找规律就可以,根据样例,可以看出,可以结果先加上非后缀部分 k 个,然后补上后缀,或则先加上前缀,然后再加上 k 个非前缀部分,一样的,找个规律而已。例如例子一中,可以 a ba ba ba ba这样或则 ab ab ab ab a 这样模拟,都可以。其他就没什么了,会 kmp 这题就应该会了,要是不会就建议去网上查一下,kmp 不同习惯的写法也不一样。
相关文章:
AcWing、第 90 场周赛:4806. 首字母大写、4807. 找数字、4808. 构造字符串(C++)
目录 4806. 首字母大写 题目描述: 实现代码: 4807. 找数字 题目描述: 实现代码: 回溯(超时): 原理思路: 贪心: 原理思路: 4808. 构造字符串 问题…...
跟同事杠上了,Apache Beanutils为什么被禁止使用?
收录于热门专栏Java基础教程系列(进阶篇) 在实际的项目开发中,对象间赋值普遍存在,随着双十一、秒杀等电商过程愈加复杂,数据量也在不断攀升,效率问题,浮出水面。 问:如果是你来写…...
Golang 模糊测试的使用
一 背景 在 Go 1.18 中,Go 语言新增模糊测试(Fuzzing)。Fuzzing,又叫fuzz testing,中文叫做模糊测试或随机测试。其本质上是一种自动化测试技术,更具体一点,它是一种基于随机输入的自动化测试技术,常被用于发现处理用户输入的代码中存在的bug和问题。模糊测试和常规的功能…...
RSA公钥加密机制跨语言应用实战
在公钥密码学中(也称为非对称密码学),加密机制依赖于两个密钥:公钥和私钥。公钥用于加密消息,而只有私钥的所有者才能解密消息。实际应用中通常需要对公钥和私钥进行序列化,然后分发密钥实现在不同场景、不同语言环境中使用。本文…...
P7面试送命题
面试总结,对标市场P7。什么叫送命题,一道题回答不上来面试直接挂的题目。JVM 运行时数据区域内存回收机制GC root有哪些volatile原理synchronize原理JDK 集合家族介绍HashMap原理ConcurrentHashMap原理Thread生命周期ThreadPoolExecutor生命周期、实例化…...
零信任-微软零信任介绍(2)
微软零信任是什么? Microsoft Zero Trust 是一种安全架构,旨在在没有信任任何设备、用户或网络的情况下保护网络。这种架构使用多重验证和分段技术,以确保每个请求和资源的安全性。 零信任不假定任何内部用户或设备是安全的ÿ…...
C++中对象调用成员函数this指针的作用
C中对象调用成员函数this指针的作用 Sales_data total;//定义对象 total.isbn();//调用对象中的成员函数isbn成员函数isbn()通过一个名为this的额外隐式参数来访问调用它的对象total。当我们调用一个成员函数时,用请求该函数的对象地址初始化this。 例如࿰…...
JavaScript------数组
目录 一、简介 1、什么是数组? 2、创建数组 3、数组的数据类型 4、向数组中添加元素 5、读取数组中的元素 6、实例属性:length 二、遍历数组 方式一:for循环 方式二:for...of 三、数组方法(常用)…...
迷宫《1》
一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道。看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路。输入格式第一行输入两个整数 �n 和 �m&#x…...
剑指 Offer 20. 表示数值的字符串
剑指 Offer 20. 表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 ‘e’ 或 ‘…...
阻抗匹配之反射波形测量
稍微接触过高速信号的朋友,一定对阻抗匹配和信号反射都有所了解,甚至可以按照公式,把反射波形一路推导出来。但是,纸上得来终绝浅,绝知此事要躬行。 今天,我们就来实测一下信号反射波形,测试环…...
微信小程序 java家校通Springboot中小学家校联系电子作业系统
小程序前端框架:uniapp 小程序运行软件:微信开发者 后端技术:javaSsm(SpringSpringMVCMyBatis)vue.js 后端开发环境:idea/eclipse 数据库:mysql 通过对各种资料的收集,了解到“校讯通”是联系社会的窗口,是实现家校联系工作和学校…...
Fluent Python 笔记 第 8 章 对象引用、可变性和垃圾回收
本章先以一个比喻说明 Python 的变量:变量是标注,而不是盒子。如果你不知道引用式变量是什么,可以像这样对别人解释别名。 然后,本章讨论对象标识、值和别名等概念。随后,本章会揭露元组的一个神奇特性:元…...
转义字符的分类
什们是转义字符 可显示字符在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么。这类字符称为可显示字符,如a、b、c、$、和空格符等都是可显示字符。 控…...
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字 一、题目描述: 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出…...
飞速创新更新IPO招股书:计划募资约14亿元,向伟为实际控制人
近日,深圳市飞速创新技术股份有限公司(下称“飞速创新”)预披露更新招股书,准备在深圳证券交易所主板上市。本次冲刺上市,飞速创新计划募资13.54亿元,招商证券为其保荐机构。 据介绍,飞速创新专…...
JUC(java.util.concurrent) 的常见类
1.ReentrantLock 可重入互斥锁. 和 synchronized 定位类似, 都是用来实现互斥效果, 保证线程安全. ReentrantLock 也是可重入锁. "Reentrant" 这个单词的原意就是 "可重入. ReentrantLock 的用法: lock(): 加锁, 如果获取不到锁就死等.trylock(超时时间):…...
Angular4 中 ckeditor5 插件的使用
Angular4 中 ckeditor5 插件的使用 0 环境、新建项目 环境: Windows10Angular/cli1.4.10(安装 Angular 的过程略过,Angular4 版本比较古老,这也导致项目安装插件及其他操作比较麻烦) 1. ckeditor5 官方用法 基础用…...
[python刷题模板] 前缀函数/next数组/kmp算法
[python刷题模板] 前缀函数/next数组/kmp算法 一、 算法&数据结构1. 描述2. 复杂度分析3. 常见应用4. 常用优化二、 模板代码1. 裸前缀函数2. 树上kmp3. 裸kmp三、其他四、更多例题五、参考链接一、 算法&数据结构 1. 描述 前缀函数和next数组基本上是一个东西&#…...
rust 程序设计语言入门(1)
本文是阅读《Rust程序设计语言》的学习记录,配合视频《Rust编程语言入门教程》食用更佳 环境搭建 windows下载rustup_init.exe,点击安装,默认选择msvc的toolchain,一路default即可 解决下载慢的问题,在powershell中修…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...
