Leetcode刷题笔记12

HJ1 字符串最后一个单词的长度

字符串最后一个单词的长度_牛客题霸_牛客网

这里可以使用rfind(),rfind()函数从字符串的末尾向前查找第一个空格的位置。这个空格将是最后一个单词和前面的单词的分隔符。首先使用getline读取字符串,然后用rfind找到最后一个空格的位置,最后根据找到的位置,计算最后一个单词的长度并输出。getline 的作用是从标准输入(cin)中读取一行文本,并将其存储到 word 字符串中。getline 读取操作在遇到换行符(\n)时结束,但换行符本身不会被存储到 word 中

代码:C++

#include <iostream>
using namespace std;int main() {string str;// cin>>str;getline(cin,str);size_t pos = str.rfind(' ');// size是最后一个字符的下一个位置// cin输入多个字符串的时候是空格或者换行来间隔的// 输入的这一行里面本身就有空格,cin就会认为这个空格是多个值之间的分割// 比如hello nowcoder,cin里面就只有hello,nowcoder在缓冲区if(pos != string::npos){cout<<str.size()-pos-1<<endl;}// 如果找不到空格,那长度就是sizeelse{cout<<str.size()<<endl;}return 0;
}

541. 反转字符串 II

541. 反转字符串 II - 力扣(LeetCode)

  • 我们以 2k为一个处理单位,每次对前 k个字符进行反转。具体操作就是每次从第i个字符开始,找到前 k个字符的位置,然后反转这部分字符串。
  • 然后跳过下一个k个字符,继续处理下一个2k段。

下面是几个例子:

 

代码:C++

class Solution {
public:string reverseStr(string s, int k) {int n = s.size();// 每次都是2k个2k个进行处理,所以+=2kfor(int i=0; i<n; i += 2*k){// reverse(s.begin() + i, s.begin() + min(i+k,n));// 每隔2k个字符的前k个字符进行反转// 剩余字符小于2k个但大于等于k个,则反转前k个字符if(i + k <= s.size()){reverse(s.begin() + i, s.begin() + i + k);continue;}// 剩余字符少于k个,则将剩余字符串全部反转reverse(s.begin() + i, s.begin() + s.size());}return s;}
};

557. 反转字符串中的单词 III

557. 反转字符串中的单词 III - 力扣(LeetCode)

解法一:双指针

使用一个 while 循环遍历整个字符串,直到 left 超过字符串长度。
在内部,使用另一个 while 循环找到当前单词的右边界,即找到下一个空格或者字符串的结尾 

  • 遍历字符串

    • 使用两个指针 leftright 来标记每个单词的起始和结束位置。
    • 从头到尾扫描字符串,当遇到空格或字符串末尾时,确定当前单词的范围。
  • 反转每个单词

    • 每找到一个完整的单词时(即从 leftright 之间的字符),使用 C++ STL 的 reverse 函数对该部分字符进行反转。
  • 跳过空格

    • 反转完成后,将 left 更新到下一个单词的起始位置,即跳过当前的空格。
  • 处理边界条件

    • 当遍历到字符串末尾时停止,保证最后一个单词能正确处理,不遗漏任何字符。

代码:C++

class Solution {
public:string reverseWords(string s) {int left = 0;int n = s.size();while(left < n){// 找到单词右边界int right = left;while(right < n && s[right] != ' '){right++;}// 反转reverse(s.begin() + left, s.begin() + right);// 移动left到下一个单词的开头left = right + 1;}return s;}
};

125. 验证回文串

125. 验证回文串 - 力扣(LeetCode)

解法一:双指针

  • 忽略非字母数字字符

    • 只需要关心字符串中的字母和数字字符,其余的字符(如标点符号、空格等)可以忽略。因此,需要一个辅助函数 isLetterOrNumber() 来判断当前字符是否是字母或数字。
  • 忽略大小写

    • 不区分大小写的方式是将所有大写字母转换为小写字母。可以通过 ASCII 码的转换来实现(大写字母的 ASCII 值比小写字母小 32)。
  • 双指针法

    • 可以用两个指针,一个从字符串的头部(begin)开始,另一个从尾部(end)开始,向中间移动,逐个字符进行比较。
    • 每次循环中:
      • 如果 begin 指针指向的字符不是字母或数字,则跳过该字符,继续向右移动。
      • 如果 end 指针指向的字符不是字母或数字,则跳过该字符,继续向左移动。
      • 如果 beginend 指针指向的字符都合法,比较它们是否相同。如果不相同,则返回 false,表示字符串不是回文。
      • 如果字符相同,则继续移动指针,直到 begin >= end,表示所有字符都匹配,则字符串是回文。
  • 结束条件

    • beginend 指针相遇或交错时,意味着所有字符已经比较完毕,如果没有发现不相同的字符,则可以判定字符串是回文。

代码:C++

class Solution {
public:// 判断是不是字母和数字bool isLetterOrNumber(char ch){return (ch >= '0' && ch <= '9')|| (ch >= 'a' && ch <= 'z');}bool isPalindrome(string s) {// 加了引用,所以可以把大写字符转小写for(auto& ch : s){if(ch >= 'A' && ch <= 'Z'){ch += 32; // ASCII中,大写字母+32就是对应的小写字母}}int begin = 0, end = s.size()-1;while(begin < end){while(begin < end && !isLetterOrNumber(s[begin])) // 如果是字母数字就停下来{// 如果不是字母数字就跳过++begin;}while(begin < end && !isLetterOrNumber(s[end])) // 如果是字母数字就停下来{// 如果不是字母数字就跳过--end;}if(s[begin] == s[end]){// 相等就继续比较++begin;--end;}else{return false;}}return true;}};

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457281.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现在设备普遍切换成TYPE-C适配器后,一拖三数据线接口变革探析

随着科技的飞速发展&#xff0c;电子设备的接口标准也在不断地更新换代。近年来&#xff0c;TYPE-C接口凭借其高速传输、正反可插等显著优势&#xff0c;逐渐成为了众多电子设备的主流接口。从智能手机到平板电脑&#xff0c;从笔记本电脑到移动电源&#xff0c;TYPE-C接口的应…

Java-图书管理系统

我的个人主页 欢迎来到我的Java图书管理系统&#xff0c;接下来让我们一同探索如何书写图书管理系统吧&#xff01; 1管理端和用户端 2建立相关的三个包&#xff08;book、operation、user&#xff09; 3建立程序入口Main类 4程序运行 1.首先图书馆管理系统分为管理员端和…

TPLCM柔性屏自动化贴合应用

在当前的显示屏制造领域&#xff0c;TP&LCM贴合技术是推动产品升级和满足市场需求的关键环节。随着技术的不断进步&#xff0c;全贴合技术因其卓越的显示效果和用户体验&#xff0c;逐渐成为中高端产品的标配。然而&#xff0c;这一技术的高精度要求和复杂工艺也带来了诸多…

物联网数据采集网关详细介绍-天拓四方

一、物联网数据采集网关的概述 物联网数据采集网关&#xff0c;简称数据采集网关&#xff0c;是物联网系统中的重要组成部分&#xff0c;位于物联网设备和云端平台之间。其主要职责是实现数据的采集、汇聚、转换、传输等功能&#xff0c;确保来自不同物联网设备的数据能够统一…

学习笔记——动态路由——OSPF(距离矢量协议)OSPF路由类型

OSPF路由类型 在OSPF中&#xff0c;路由类型指的是不同种类的路由&#xff0c;用于描述网络中不同的路由信息及其传输方式。 1、Intra Area路由(区域内路由) Intra Area路由(区域内路由/本地路由/内部路由)是OSPF协议中的一种路由类型&#xff0c;用于描述在同一个OSPF区域内…

小白直接冲!一区蛇群优化算法+双向深度学习+注意力机制!SO-BiTCN-BiGRU-Attention多输入单输出回归预测

小白直接冲&#xff01;一区蛇群优化算法双向深度学习注意力机制&#xff01;SO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 小白直接冲&#xff01;一区蛇群优化算法双向深度学习注意力机制&#xff01;SO-BiTCN-BiGRU-Attention多输入单输出回归预测预测效果基本介绍程…

Linux相关概念和易错知识点(16)(Shell原理、进程属性和环境变量表的联系)

Shell原理及其模拟实现 在认识进程exec系列函数、命令行参数列表、环境变量之后&#xff0c;我们可以尝试理解一下Shell的原理&#xff0c;将各方知识串联起来&#xff0c;让Shell跑起来才能真正理解这些概念。我会以模拟Shell执行的原理模拟一个Shell。途中配上相关讲解。 1…

Mybatis-03.入门-配置SQL提示

一.配置SQL提示 目前的Springboot框架在mybatis程序中编写sql语句并没有给到任何的提示信息&#xff0c;这对于开发者而言是很不友好的。因此我们需要配置SQL提示。 配置SQL提示 这样再去写SQL语句就会有提示了。 但是会发现指定表名时并没有给出提示。这是因为&#xff1a…

用kali入侵 DarkHole_2测试

进入kali系统调出root交互式界面 netdiscover -r 000.000.000.000/24 -------局域网探测IP工具 nmap 设备端口扫描 发现两个攻击点一个是80端口的Http 一个是22端口的ssh 发现有许多GIT文件 可能会出现git源码泄露 使用githack URL 命令还原git源文件 打开面板控制命令行 输入…

2024数学分析【南昌大学】

计算极限 lim ⁡ n → ∞ 2024 n ( 1 − cos ⁡ 1 n 2 ) n 3 1 + n 2 − n \mathop {\lim }\limits_{n \to \infty } \frac{{\sqrt[n]{{2024}}\left( {1 - \cos \frac{1}{{{n^2}}}} \right){n^3}}}{{\sqrt {1 + {n^2}} - n}} n→∞lim​1+n2 ​−nn2024 ​(1−cosn21​)n3​ …

【Vulnhub靶场】DC-4

DC-4靶场下载地址https://www.five86.com/downloads/DC-4.zip 本机IP&#xff1a;192.168.118.128 靶机IP&#xff1a;192.168.118.0/24 信息收集 扫描主机存活&#xff0c;扫描端口&#xff0c;扫描服务 第一步扫描出主机ip为192.168.118.141 nmap -sP 192.168.118.0/24 nm…

通过rancher2.7管理k8s1.24及1.24以上版本的k8s集群

目录 初始化实验环境 安装Rancher 登录Rancher平台 通过Rancher2.7管理已存在的k8s最新版集群 文档中的YAML文件配置直接复制粘贴可能存在格式错误&#xff0c;故实验中所需要的YAML文件以及本地包均打包至网盘. 链接&#xff1a;https://pan.baidu.com/s/1oYX4eGoBtW_R-7i…

canvas-editor首行缩进

canvas-editor中渲染部分的源码都在Draw.ts里&#xff0c;能找到computeRowList方法中并没有实现首行缩进相关的逻辑&#xff0c;但是实现了element.type ElementType.TAB的缩进&#xff0c;如图&#xff1a; 因此我们可以基于tab进行首行缩进的逻辑编写&#xff0c;在main.ts…

GoogleChrome和Edge浏览器闪屏问题

GoogleChrome和Edge浏览器闪屏问题 文章目录 GoogleChrome和Edge浏览器闪屏问题 买了电脑半年, GoogleChrome和edge浏览器出现了一个令人头疼的问题–闪屏, 就是打开这两个浏览器之后, 就会出现电脑屏幕一闪一闪的, 过一会就看不见了, 跟黑夜里的闪电一样, 遇到这种情况我都会直…

《 C++ 修炼全景指南:十七 》彻底攻克图论!轻松解锁最短路径、生成树与高效图算法

摘要 1、引言 1.1、什么是图&#xff1f; 图&#xff08;Graph&#xff09;是计算机科学和离散数学中一种重要的数据结构&#xff0c;用来表示一组对象之间的关系。一个图由顶点&#xff08;也称为节点&#xff0c;Vertex&#xff09;和边&#xff08;Edge&#xff09;组成。…

【Python爬虫实战】Selenium自动化网页操作入门指南

#1024程序员节&#xff5c;征文# &#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、准备工作 &#xff08;一&#xff09;安装 Selenium 库 &#xff0…

VMware Workstation Pro 16 搭建 android-x86过程问题罗列

1、搭建完成后&#xff0c;app安装显示软件包解析失败或app打开闪退 测试了android-x86_64-9.0-r2这个版本&#xff0c;发现按照网上部署arm库方法没有成功&#xff0c;最后使用android-x86-7.1-r5版本解决了问题 2、android-x86网络连接不通 虚拟机网络设置选择桥接模式 安…

低代码平台如何通过AI赋能,实现更智能的业务自动化?

引言 随着数字化转型的加速推进&#xff0c;企业在日常运营中面临的业务复杂性与日俱增。如何快速响应市场需求&#xff0c;优化流程&#xff0c;并降低开发成本&#xff0c;成为各行业共同关注的核心问题。低代码平台作为一种能够快速构建应用程序的工具&#xff0c;因其可视化…

Springboot 使用EasyExcel导出Excel文件

Springboot 使用EasyExcel导出Excel文件 Excel导出系列目录&#xff1a;引入依赖创建导出模板类创建图片转化器 逻辑处理controllerservice 导出效果遗留问题 Excel导出系列目录&#xff1a; 【Springboot 使用EasyExcel导出Excel文件】 【Springboot 使用POI导出Excel文件】 …

如何提高游戏的游戏性

改进游戏玩法是一个动态的过程&#xff0c;需要深入了解是什么让玩家保持参与、挑战和兴奋&#xff0c;以获得更多。优秀游戏的核心是平衡——乐趣和难度的无缝结合&#xff0c;让玩家在不感到沮丧的情况下为自己的技能感到奖励。微调这种平衡通常涉及调整难度曲线&#xff0c;…