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

每日练习-9

目录

1、井字棋

2、密码强度等级

3、二维数组中的查找

4.调整数组奇数偶数

5.旋转数组中的最小元素

6、替换空格


1、井字棋

解析:井字棋有四种情况表示当前玩家获胜,行全为1, 列全为1,主对角全为1,  副对角全为1。遍历board的每一行,每一列,每一条对角线,检查是否有连成一排的的棋子,如果有,返回True。如果遍历完没有找到连成一排的棋子,返回False。

代码如下:

class Board {public:bool checkWon(vector<vector<int> > board) {int sum = 0;int row = board.size();for (int i = 0; i < row; i++) {//先看每一行sum = 0;for (int j = 0; j < row; j++) {sum += board[i][j];if (sum == row) {return true;}}}for (int j = 0; j < row; j++) {//再看每一列sum = 0;for (int i = 0; i < row; i++) {sum += board[j][i];if (sum == row) {return true;}}}//检查主对角线的和是是否等于rowsum = 0;for (int i = 0; i < row; i++) {sum += board[i][i];}if (sum == row)return true;//检查副对角线的和是是否等于rowsum = 0;for (int i = 0; i < row; i++) {sum += board[i][row - i - 1];}if (sum == row)return true;return false;}// write code here
};

2、密码强度等级

解析:这一道题思路很简单,由于不同种类的字符得分不同,同可以对每一个维度进行单独判断,即对于长度,字母,数字,符号单独判断,最后把所有的单项值根据题目要求相加,输出对应的安全级别。

代码如下:

#include <iostream>
#include <string>
using namespace std;
int score_count(string& str) {int digit = 0, symbol = 0;int lower = 0, upper = 0, charc = 0;int size = 0, sum = 0;for (auto ch : str) {if (ch >= 'a' && ch <= 'z') {lower++;charc++;} else if (ch >= 'A' && ch <= 'Z') {upper++;charc++;} else if (ch >= '0' && ch <= '9') {digit++;} else if ((ch >= 0x21 && ch <= 0x2F) ||(ch >= 0x3A && ch <= 0x40) ||(ch >= 0x5B && ch <= 0x60) ||(ch >= 0x7B && ch <= 0x7E)) {symbol++;}}size = str.size();if (size <= 4)sum += 5;else if (size <= 7)sum += 10;elsesum += 25;if (lower > 0 && upper > 0)sum += 20;else if (lower == charc || upper == charc)sum += 10;if (digit == 1)sum += 10;else if (digit > 1)sum += 20;if (symbol == 1)sum += 10;else if (symbol > 1)sum += 25;if (lower > 0 && upper > 0 && digit > 0 && symbol > 0)sum += 5;else if ((lower > 0 || upper > 0) && digit > 0 && symbol > 0)sum += 3;else if ((lower > 0 || upper > 0) && digit > 0 && symbol == 0)sum += 2;return sum;
}
int main() {string str;while (cin >> str) {int score = score_count(str);if (score >= 90) {cout << "VERY_SECURE" << endl;} else if (score >= 80) {cout << "SECURE" << endl;} else if (score >= 70) {cout << "VERY_STRONG" << endl;} else if (score >= 60) {cout << "STRONG" << endl;} else if (score >= 50) {cout << "AVERAGE" << endl;} else if (score >= 25) {cout << "WEAK" << endl;} else {cout << "VERY_WEAK" << endl;}}return 0;
}

3、二维数组中的查找

解析:这是一个经典的算法问题,一种常见的方法是从二维数组的右上角或左下角开始,根据目标整数和当前元素的大小关系,逐步缩小查找范围,直到找到目标整数或者超出数组边界。这种方法的时间复杂度是O(m+n),其中m和n分别是二维数组的行数和列数。

代码如下:

class Solution {public:bool Find(int target, vector<vector<int> >& array) {int row = array.size();int col = array[0].size();int i = 0;int j = col - 1;while (i < row && j > -1) {if (array[i][j] == target) {return true;} else if (array[i][j] > target) {j--;} else if (array[i][j] < target){i++;}}return false;}};

4.调整数组奇数偶数

解析:这是一个数组的奇偶数分割问题,可以用双指针的方法来实现。双指针的方法是用两个变量分别指向数组的头部和尾部,然后同时向中间移动,每次移动时判断当前指向的元素是奇数还是偶数,如果是奇数就保持不变,如果是偶数就和另一个指针指向的元素交换位置,直到两个指针相遇或者交错为止。

代码如下:

class Solution {
public:vector<int> reOrderArrayTwo(vector<int>& array) {int left=0;int right=array.size()-1;int term=0;while(left<right){while(array[left]%2==1){left++;}while(array[right]%2==0){right--;}if(left<right){term=array[left];array[left]=array[right];array[right]=term;}}return array;}
};

5.旋转数组中的最小元素

解析:旋转数组中的最小元素是一个常见的算法问题,可以用二分法来解决。二分法的思路是用两个指针分别指向数组的首尾,然后根据中间元素和右指针指向的元素的大小关系,缩小查找范围,直到找到最小元素或者两个指针相遇。

代码如下:

#include <iostream>
#include<vector>
using namespace std;int main() {vector<int> arr;int n;while(cin>>n){arr.push_back(n);}int left=0;int right=arr.size()-1;while(left<right){int mid=left+(right-left)/2;if(arr[mid]>arr[right]){left=mid+1;}else if(arr[mid]<arr[right]){right=mid;}else right=right-1;}cout<<arr[left]<<endl;return 0;}

6、替换空格

解析:

首先,我们需要遍历字符串s,找出其中有多少个空格,这样我们就可以计算出替换后的字符串长度。然后,我们需要从后往前修改字符串s,使用两个指针i和j,分别指向原字符串和新字符串的末尾。接下来,我们需要判断s[i]是否是空格,如果不是,就直接复制到s[j],然后i和j都向前移动一位;如果是,就在s[j]处依次填入’0’,‘2’和’%',然后i向前移动一位,j向前移动三位。最后,我们需要重复上述步骤,直到i和j相等为止,这样就完成了空格的替换。

代码如下:

class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param s string字符串* @return string字符串*/string replaceSpace(string s) {int count = 0;for (char c : s) {if (c == ' ') count++;}// 如果没有空格,直接返回if (count == 0) return s;// 计算替换后的字符串长度int len = s.length();int newLen = len + count * 2;// 从后往前修改字符串s,使用两个指针i和jint i = len - 1;int j = newLen - 1;// 扩充字符串s的容量s.resize(newLen);// 当i和j不相等时,循环执行while (i != j) {// 如果s[i]不是空格,就复制到s[j],然后i和j都向前移动一位if (s[i] != ' ') {s[j] = s[i];i--;j--;} else {// 如果s[i]是空格,就在s[j]处依次填入'0','2'和'%',然后i向前移动一位,j向前移动三位s[j] = '0';s[j - 1] = '2';s[j - 2] = '%';i--;j -= 3;}}return s;}
};

相关文章:

每日练习-9

目录 1、井字棋 2、密码强度等级 3、二维数组中的查找 4.调整数组奇数偶数 5.旋转数组中的最小元素 6、替换空格 1、井字棋 解析&#xff1a;井字棋有四种情况表示当前玩家获胜&#xff0c;行全为1&#xff0c; 列全为1&#xff0c;主对角全为1&#xff0c; 副对角全为1。遍历…...

微信小程序 -- 页面间通信

前言 今天我们来说下微信小程序的页面间通信&#xff1a; 通过url传参实现页面间单向通信通过getCurrentPages()页面栈实现页面间单向通信通过EventChannel实现页面间双向通信 1、url传参 我们知道页面之间的跳转可以通过路由组件来实现&#xff0c;其中组件的属性url就是要…...

关于Jupyter markdown的使用

一级标题 #空格 标题1 二级标题 ## 空格 标题2 三级标题 ###空格 标题3 无序&#xff1b; 有序&#xff1a; 数学符号&#xff1a;...

【C语言】字符函数和内存操作函数

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解字符函数和内存操作函数&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一.字符函数1.1 字符分类函数1.2 字符转换函数 二.内存操作函数2.1 memcpy2.2…...

SpringBoot大文件上传实现分片、断点续传

大文件上传流程 客户端计算文件的哈希值&#xff0c;客户端将哈希值发送给服务端&#xff0c;服务端检查数据库或文件系统中是否已存在相同哈希值的文件&#xff0c;如果存在相同哈希值的文件&#xff0c;则返回秒传成功结果&#xff0c;如果不存在相同哈希值的文件&#xff0…...

React 注意事项

在使用 React 进行开发时&#xff0c;有一些注意事项可以帮助你更好地使用这个JavaScript库。以下是一些需要注意的事项&#xff1a; 组件结构和组织 尽量保持组件简单和可复用&#xff1a;将组件拆分为较小和独立的部分&#xff0c;以提高代码的可维护性和可测试性。遵循单一…...

常见排序算法Java版(待续)

冒泡排序O(n^2) public class Main {public static void main(String[] args) {Random random new Random();int[] nums new int[]{random.nextInt(100), random.nextInt(100), random.nextInt(100), random.nextInt(100), random.nextInt(100), random.nextInt(100)};for (i…...

Jmeter 多实例压测

Apache JMeter 是一个开源的 Java 应用程序&#xff0c;用于性能测试和负载测试。它最初是为测试 Web 应用程序而创建的&#xff0c;但现在已广泛用于测试各种不同类型的应用程序&#xff0c;包括数据库、消息队列、FTP 服务器等。JMeter 提供了丰富的功能&#xff0c;使您能够…...

线程安全问题 --- 内存可见性问题

小王学习录 本月鸡汤:什么是内存可见性问题引起内存可见性问题的原因如何解决内存可见性问题volatile使用规范编外: 工作内存(工作存储区)由前面文章介绍可以知道, 引起线程安全问题有 五个原因, 分别是: 线程抢占式执行, 随即调度(根本原因); 多个线程对同一变量执行 修改操…...

消息队列 Kafka

Kafka Kafka 是一个分布式的基于发布/订阅模式的消息队列&#xff08;MQ&#xff0c;Message Queue&#xff09;&#xff0c;主要应用于大数据实时处理领域 为什么使用消息队列MQ 在高并发环境下&#xff0c;同步请求来不及处理会发生堵塞&#xff0c;从而触发too many conne…...

抽象轻松的java-mybatis简单入门

第一步&#xff1a;用IDEA新建一个java包 第二步&#xff1a;在IDEA中添加数据库&#xff08;ps&#xff1a;自己百度&#xff09; 点击数据库 第二步&#xff0c;新建数据库 选择你使用的数据库 用户与密码根据自己的设置进行配置 为了更方便的查看数据库&#xff0c;可以像图…...

012-第二代硬件选型

第二代硬件选型 文章目录 第二代硬件选型项目介绍重新换平台缘由X86 && Arm 架构切换 ARM Linux 硬件选型系统确定Qt 版本确定总结一下 关键字&#xff1a; Qt、 Qml、 Arm、 X86、 linux 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QM…...

Spring中的设计模式

目录 工厂模式 组合模式 适配器模式 代理模式 单例模式 观察者模式 模板方法模式 责任链模式 Spring有着非常优雅的设计&#xff0c;很多地方都遵循SOLID原则&#xff0c;里面的设计模式更是数不胜数大概有以下几种&#xff1a; 工厂模式 所谓的工厂模式&#xff0c;核…...

软考 系统架构设计师系列知识点之软件质量属性(1)

这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;11月4号就要考试&#xff0c;因此8天长假绝不能荒废&#xff0c;必须要好好利用起来。现在将各个核心知识点一一进行提炼并做记录。 所…...

GPT系列论文解读:GPT-1

GPT系列 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一系列基于Transformer架构的预训练语言模型&#xff0c;由OpenAI开发。以下是GPT系列的主要模型&#xff1a; GPT&#xff1a;GPT-1是于2018年发布的第一个版本&#xff0c;它使用了12个Transformer…...

数学分析:含参变量的积分

同样很多收敛性的证明不是重点&#xff0c;但里面的知识还是需要适当掌握&#xff0c;知道中间的大致思考和解决路径即可。 本质还是极限的可交换性&#xff0c;求导可以换到积分里面去操作。 这里要注意变量的区别&#xff0c;首先积分的被积变量是x&#xff0c;但是函数的变量…...

关于一篇ElementUI之CUD+表单验证

目录 一.CUD增删改查简述 1.1.增删改功能实现 二.表单验证 前端所有代码&#xff1a; 好啦今天就分享到这了&#xff0c;希望能帮到你哦&#xff01;&#xff01;&#xff01; 以下的代码基于我博客中的代码进行续写 : 关于ElementUI之动态树数据表格分页实例 一.CUD增删改…...

VUE模板编译的实现原理

前言 在Vue.js 2.0中&#xff0c;模板编译是通过将模板转换为渲染函数来实现的。渲染函数是一个函数&#xff0c;它返回虚拟DOM节点&#xff0c;用于渲染实际的DOM。Vue.js的模板编译过程可以分为以下几个步骤&#xff1a; 将模板解析为抽象语法树&#xff08;AST&#xff09…...

基础算法之——【动态规划之路径问题】1

今天更新动态规划路径问题1&#xff0c;后续会继续更新其他有关动态规划的问题&#xff01;动态规划的路径问题&#xff0c;顾名思义&#xff0c;就是和路径相关的问题。当然&#xff0c;我们是从最简单的找路径开始&#xff01; 动态规划的使用方法&#xff1a; 1.确定状态并…...

三十三、【进阶】索引的分类

1、索引的分类 &#xff08;1&#xff09;总分类 主键索引、唯一索引、常规索引、全文索引 &#xff08;2&#xff09;InnoDB存储引擎中的索引分类 2、 索引的选取规则(InnoDB存储引擎) 如果存在主键&#xff0c;主键索引就是聚集索引&#xff1b; 如果不存在主键&#xff…...

Graphormer一键部署与运维监控实战

Graphormer一键部署与运维监控实战 1. 企业级AI模型运维挑战 在AI技术快速落地的今天&#xff0c;Graphormer作为图神经网络领域的先进模型&#xff0c;已经在推荐系统、分子属性预测等场景展现出强大能力。但很多企业在实际部署后常常面临运维难题&#xff1a;服务突然崩溃找…...

学历作为硬实力:当代中国权力结构中知识资本的制度化逻辑与社会地位再生产机制

学历作为硬实力&#xff1a;当代中国权力结构中知识资本的制度化逻辑与社会地位再生产机制 作者&#xff1a;培风图南以星河揽胜 专栏链接&#xff1a;澄心观道 字数&#xff1a;约 14,200 字 | 阅读时长&#xff1a;约 52 分钟 引言&#xff1a;一个被广泛观察却少有深究的社会…...

中医AI革命:如何用70亿参数模型破解千年诊疗难题

中医AI革命&#xff1a;如何用70亿参数模型破解千年诊疗难题 【免费下载链接】CMLM-ZhongJing 首个中医大语言模型——“仲景”。受古代中医学巨匠张仲景深邃智慧启迪&#xff0c;专为传统中医领域打造的预训练大语言模型。 The first-ever Traditional Chinese Medicine large…...

OpenClaw性能对比测试:Qwen3-4B与Qwen3-32B模型任务执行效率

OpenClaw性能对比测试&#xff1a;Qwen3-4B与Qwen3-32B模型任务执行效率 1. 测试背景与目标 最近在本地部署OpenClaw时遇到了一个实际选择难题&#xff1a;作为个人开发者&#xff0c;到底该选择Qwen3-4B这样的轻量模型&#xff0c;还是直接上Qwen3-32B这样的"大家伙&qu…...

CMake 导言

为什么选择 CMake 在掌握 Linux 基础后&#xff0c;我们知道一个项目通常由多个源文件组成。想要构建这个项目&#xff0c;就需要按照一定的规则对源文件进行编译和链接&#xff0c;而这些规则通常需要在 Makefile 中定义。 但随着项目体量增大&#xff0c;手写 Makefile 会变得…...

2025最权威的十大AI学术神器推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于人工智能生成内容也就是AIGC愈发普及的当前情形下&#xff0c;把它的机械痕迹以及同质化特…...

别再被@JsonFormat和@DateTimeFormat搞晕了!SpringBoot中时间处理的完整避坑指南

SpringBoot时间格式化终极指南&#xff1a;从JsonFormat到实战避坑 凌晨三点的办公室&#xff0c;咖啡杯已经见底&#xff0c;屏幕上却再次弹出那个熟悉的400错误——"Failed to parse Date value"。这可能是每个Java开发者在处理时间格式时都经历过的噩梦。时间数据…...

汇智信科-机场数字孪生系统

机场数字孪生系统以数字化孪生技术构建机场全要素虚拟映射&#xff0c;精准还原机场、跑道、塔台等设施及飞机运行状态&#xff0c;支持多维度动态监测与可视化管控&#xff1b;通过模拟飞机调度、跑道滑行等全流程作业场景&#xff0c;覆盖机场多角色业务协同&#xff0c;同时…...

量化交易backtrader实践(二)_数据预处理篇(1)_格式转换与清洗

1. 数据预处理的重要性 在量化交易中&#xff0c;数据预处理就像做菜前的食材准备阶段。想象一下&#xff0c;如果你要做一道红烧肉&#xff0c;却直接拿刚从冰箱取出的冻肉下锅&#xff0c;结果可想而知。同样地&#xff0c;未经处理的原始金融数据直接喂给backtrader&#xf…...

西门子SMART200 PLC梯形图,SR20,昆仑通态触摸屏组态画面,常压电热水锅炉比例模糊...

西门子SMART200 PLC梯形图&#xff0c;SR20&#xff0c;昆仑通态触摸屏组态画面&#xff0c;常压电热水锅炉比例模糊控制追目标温度&#xff0c;PLC源触摸屏源CAD原理图图纸全套常压电热水锅炉那种“冰火两重天”的加热体验谁懂&#xff1f;茶水间或者小烘干池边上&#xff0c;…...