蓝桥杯刷题——day1
蓝桥杯刷题——day1
- 题目一
- 题干
- 题目解析
- 代码
- 题目二
- 题干
- 题目解析
- 代码
题目一
题干
给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。本题中,将空字符串定义为有效的 回文串 。
题目链接:验证回文串
示例 1:
输入: s = “A man, a plan, a canal: Panama”
输出: true
解释:“amanaplanacanalpanama” 是回文串
示例 2:
输入: s = “race a car”
输出: false
解释:“raceacar” 不是回文串
题目解析
这条题目是一个基础题,我们可以设置两个指针,left和right,分别指向字符串的起点和终点,两指针同时向中间运动,如果left指向的不是字符或者数字,那么left++,如果right指向的不是字符或者数字,那么right–,如果两者指向的是字符或者数字那么进一步判断,如果两者指向的字符相同,那么left++,并且right–;如果指向的不同,但是只是大小写的区别,那么left++,并且right–;否则的话跳出循环,这条题目并没有什么难度,其实考察的只是循环的嵌套,下面是完整代码:
代码
class Solution {public boolean isPalindrome(String s) {char[] array = s.toCharArray();int left = 0;int right = array.length - 1;while(left < right){if(((array[left] <= 57 && array[left] >= 48) || (array[left] >= 65 && array[left] <= 90) || (array[left] <= 122 && array[left] >= 97))&& ((array[right] <= 57 && array[right] >= 48) ||(array[right] >= 65 && array[right] <= 90) || (array[right] <= 122 && array[right] >= 97))){if(array[left] == array[right]){right--;left++;}else {if(array[left] > 57 && array[right] >57 && Math.abs(array[left] - array[right]) == 32){right--;left++;}else {break;}}}else if((array[left] <= 57 && array[left] >= 48) || (array[left] >= 65 && array[left] <= 90) || (array[left] <= 122 && array[left] >= 97)){right--;}else if((array[right] <= 57 && array[right] >= 48) ||(array[right] >= 65 && array[right] <= 90) || (array[right] <= 122 && array[right] >= 97)){left++;}else {right--;left++;}}if(left < right){return false;}else {return true;}}
}
这里要说一下,这条题目还考察了Ascii码表,其他的可以不用记忆,但是这三个关键的是最好要记下来的:
| 字符 | Ascii值 |
|---|---|
| 0 | 48 |
| A | 65 |
| a | 97 |
下面附上一张完整的Ascii表:

题目二
题干
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。如图所示:

题目链接:杨辉三角
示例一:
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例二:
输入: numRows = 1
输出: [[1]]
题目解析
这条题目相对难一点,但是理解其中的计算过程也就不那么难了,首先我们可以看到,每行的第一个数和最后一个数都是1,因此我们在考虑每行计算的时候先把这个考虑进去,其次除了每行的第一个数字和最后一个数字,中间的数字都满足以下的计算方式(i表示第i行,j表示第j个数):
f(i,j)=f(i-1,j-1) + f(i-1,j)
例如f(5,2)(第5行,第2个数)为4,他就是由f(4,1)+f(4,2)得到的,因此我们就完成了杨辉三角的代码了,下面是完整的代码:
代码
import java.util.*;
class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> lists = new ArrayList<>();for(int i = 1;i <= numRows;i++){List<Integer> list = new ArrayList<>();for(int j = 1;j <= i;j++){ //4,2 3,1 + 3,2if(j == 1 || j == i){list.add(1);}else {List<Integer> tmplist = lists.get(i-2);int first = tmplist.get(j-2);int second = tmplist.get(j-1);list.add(first+second);}}lists.add(list);}return lists;}
}
有细心的同学发现,我的计算方法好像是f(i-2,j-2) + f(i-2,j-1),这是因为我的i和j是从1开始的,而lists和list都是数组,他们使用get方法拿数据,下标都是从0开始的,因此我需要对应的多减去一个1。好了,今天的蓝桥刷题就到这里,如果对你有所帮助,别忘了点赞和收藏,谢谢各位!当然有问题也欢迎各位评论或者私信!
相关文章:
蓝桥杯刷题——day1
蓝桥杯刷题——day1 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。本题中,将空字符串定义为有效的 回文串 。 题目链接&a…...
Leetcode 面试150题 399.除法求值
系列博客目录 文章目录 系列博客目录题目思路代码 题目 链接 思路 广度优先搜索 我们可以将整个问题建模成一张图:给定图中的一些点(点即变量),以及某些边的权值(权值即两个变量的比值),试…...
活动预告 |【Part2】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识
课程介绍 通过参加“Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识”活动提升你的技能。在本次免费的介绍性活动中,你将获得所需的安全技能和培训,以创造影响力并利用机会推动职业发展。你将了解安全性、合规性和身份的基础知…...
Unity游戏实战
很小的时候在键盘机上玩过一个游戏叫寻秦,最近看有大佬把他的安卓版做出来了,打开封面就是Unity,想自己也尝试一下。...
SQL中的替换函数replace() 使用
这条 SQL 语句的作用是将 tool_tool 表中所有 link 字段包含 https://www.xxspvip.cn 的记录中的 https://www.xxspvip.cn 替换为 http://192.168.1.1。具体解释如下: SQL 语句分解 UPDATE tool_toolSET link REPLACE(link, https://www.xxspvip.cn, http://192.…...
Python面试常见问题及答案5
一、基础语法相关 问题1: Python的可变数据类型和不可变数据类型有哪些? 答案: 在Python中,可变数据类型有列表(list)、字典(dict)、集合(set)。这些数据类型…...
(css)element中el-select下拉框整体样式修改
(css)element中el-select下拉框整体样式修改 重点代码(颜色可行修改) // 修改input默认值颜色 兼容其它主流浏览器 /deep/ input::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.50); } /deep/ input::-moz-input-placeholder {color: rgba…...
点击按钮打开dialog嵌套表格checked数据关闭dialog回显checked数据
介绍:点击按钮打开dialog嵌套表格,勾选数据,点击确认关闭弹窗并且回显选中得数据,回显的数据被删除,dialog里面的数据也被取消勾选,废话不多说 上代码!!! 这里的勾选回显…...
《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(三)
《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(三) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…...
大模型呼出机器人有哪些优势和劣势?
大模型呼出机器人有哪些优势和劣势? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 大模型呼出机器人在实际应用中展现出了一系列优势和劣势,以下是对其优势和劣势的详细分析ÿ…...
Python鼠标轨迹算法(游戏防检测)
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
安宝特分享 | AR技术助力医院总院与分院间的远程面诊
随着科技的迅猛发展,增强现实(AR)技术在各行各业的应用愈发广泛,特别是在医疗领域,其潜力和价值正在被不断挖掘。在现代医疗环境中,患者常常面临“看病难、看病远、看病急”等诸多挑战,而安宝特…...
css中的字体单位
绝对长度单位 这些单位表示固定的物理尺寸,不会根据其他因素变化。 cm:厘米mm:毫米in:英寸(1in 96px 2.54cm)px:像素(最常用的绝对单位,在屏幕上的表现取决于设备的分…...
如何使用程序查询域名whois信息?(带PHP/C#示例)
直接使用TCP协议向WHOIS服务器的43端口发送查询请求即可返回WHOIS信息。 一些国际域名(.COM/.NET/.CC等)需要继续向各注册商的WHOIS服务服务发送查询请求来获取详细信息。 大部分New gTLD来说,服务器是“whois.nic.[后缀]”,例如.red的WHOIS服务器为whoi…...
在C#中编程绘制和移动线段
这个示例允许用户绘制和移动线段。它允许您根据鼠标下方的内容执行三种不同的操作。 当鼠标位于某个线段上时,光标会变成手的形状。然后您可以单击并拖动来移动该线段。当鼠标位于线段的终点上时,光标会变成箭头。然后您可以单击并拖动以移动终点。当鼠…...
web自动化测试框架playwright
一、背景:UI自动化的痛点: 1、设计脚本耗时: 需要思考要如何模拟用户的操作,如何触发页面的事件,还要思考如何设计脚本,定位和操作要交互的元素、路径、位置,再编写代码逻辑,往复循…...
【报错记录】Ubuntu22.04解决开机卡在 /dev/sda5 : clean , *files , *blocks
一个愿意伫立在巨人肩膀上的农民...... 一、错误现象 本人的电脑安装Windows10和Ubuntu22.04双系统,一次训练中电脑死机无法开机,重启之后便出现如下错误,在网上寻找过很多方法均无效,在root下禁用了samba服务,也无济…...
【AIGC】如何高效使用ChatGPT挖掘AI最大潜能?26个Prompt提问秘诀帮你提升300%效率的!
还记得第一次使用ChatGPT时,那种既兴奋又困惑的心情吗?我是从一个对AI一知半解的普通用户,逐步成长为现在的“ChatGPT大神”。这一过程并非一蹴而就,而是通过不断的探索和实践,掌握了一系列高效使用的技巧。今天&#…...
免费生成AI PPT产品推荐?
要完全免费几乎是没有的,要知道AI还是非常烧钱的。 不过免费蹭还是有很多方法的,这里收集了一些: 下面分享我自己免费蹭过的几款AI制作PPT的工具。 1 金山-WPS PPT对我们来说并不陌生,而微软的PowerPoint与金山的WPS也是我们最常…...
ubuntu22.04 使用crash
文章目录 前言一、apt 安装dbgsym vnlinux二、使用.ddeb包安装dbgsym vnlinux三、dbgsym发行版四、crash调试参考资料 前言 最近在适配 ubuntu系统,记录一下其crash的安装。 一、apt 安装dbgsym vnlinux # echo "deb http://ddebs.ubuntu.com $(lsb_release…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
Java多线程实现之Runnable接口深度解析
Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...
