面试经典算法题之双指针专题

力扣经典面试题之双指针 ( 每天更新, 每天一题 )

文章目录

  • 力扣经典面试题之双指针 ( 每天更新, 每天一题 )
    • 验证回文串
      • 收获
    • 392. 判断子序列

验证回文串

在这里插入图片描述
思路

一: 筛选 + 双指针验证

class Solution {
public:bool isPalindrome(string s) {// 所有大写字母 ==> 小写 去除非字母部分if(s == "") {return true;}string str = "";int s_size = s.size();for(int i = 0; i< s_size; i++) {// 大写字母if(s[i]-'0' >= 'A'-'0' && s[i]-'0' <= 'Z'-'0' ) {str += 'a'+s[i]-'A';}else if ((s[i]-'0' >= 'a'-'0' && s[i]-'0' <= 'z'-'0') || isdigit(s[i])) {str += s[i];}}// 判断回文int str_size = str.size();for(int l = 0, r = str_size-1;l < r ;l++, r-- ) {// 不相等if(str[l] != str[r]) {return false;}}return true;}
};

代码二: 巧用 API
最简单的方法是对字符串 sss 进行一次遍历,并将其中的字母和数字字符进行保留,放在另一个字符串
第一种是使用语言中的字符串翻转 API 得到 sgood 的逆序字符串

class Solution {
public:bool isPalindrome(string s) {string sgood;for (char ch: s) {if (isalnum(ch)) {sgood += tolower(ch);}}string sgood_rev(sgood.rbegin(), sgood.rend());return sgood == sgood_rev;}
};

收获

这到题目, 就是简单的双指针例题
在代码中使用到一些函数,可以记一下
tolower(ch) 函数 是把大写字母转成小写字母
isdigit(ch) 函数 是判断该字符是否为数字,也就是 ‘0’ 到 ‘9’

392. 判断子序列

在这里插入图片描述
思路
一、 双指针
就是两个字符串都有一个指针
分别移动
二、动态规划
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;bool isSubsequence(string s, string t)
{// 直接暴力int s_size = s.size();int t_size = t.size();int i = 0;int j = 0;for (; i < s_size && j < t_size;){if (s[i] == t[j]){i++;}j++;}if (i == s_size){return true;}else{return false;}
}
int main()
{string s, t;s = "dfadf";t = "dfadf";cout<<isSubsequence(s,t)<<endl;return 0;
}

动态规划

class Solution {
public:bool isSubsequence(string s, string t) {int n = s.size(), m = t.size();vector<vector<int> > f(m + 1, vector<int>(26, 0));for (int i = 0; i < 26; i++) {f[m][i] = m;}for (int i = m - 1; i >= 0; i--) {for (int j = 0; j < 26; j++) {if (t[i] == j + 'a')f[i][j] = i;elsef[i][j] = f[i + 1][j];}}int add = 0;for (int i = 0; i < n; i++) {if (f[add][s[i] - 'a'] == m) {return false;}add = f[add][s[i] - 'a'] + 1;}return true;}
};

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

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

相关文章

深度学习中的模块化设计

模块化设计在机器学习和深度学习领域中是一个重要的概念&#xff0c;特别是在构建和改进像编码器-解码器这样的复杂模型时。以下是模块化设计如何帮助快速集成最新研究成果的一些关键点&#xff1a; 即插即用&#xff1a;模块化设计允许研究人员将新的研究成果如新的注意力机制…

掌握JavaScript面向对象编程核心密码:深入解析JavaScript面向对象机制对象基础、原型模式与继承策略全面指南,高效创建高质量、可维护代码

ECMAScript&#xff08;简称ES&#xff0c;是JavaScript的标准规范&#xff09;支持面向对象编程&#xff0c;通过构造函数模拟类&#xff0c;原型链实现继承&#xff0c;以及ES6引入的class语法糖简化面向对象开发。对象可通过构造函数创建&#xff0c;使用原型链共享方法和属…

max各种相机导出到ue4匹配镜头的工具集

总览 rollout export_UE4Cam_v2 "导出UE4Cam_v2:半自动" width:200 height:120(HyperLink explain "在打开的max文件中使用" pos:[25,12] width:200 height:15 color:(color 255 155 0) GroupBox grp1 "要导出的相机名" pos:[5,28] width:179 …

一个单例模式中使用std::unique_ptr引起的莫名其妙的COFF损坏的问题(未解决)

使用static std::unique_ptr和static std::shared_ptr都不行struct IElementAgendaEvents {//! Called to allow listeners to modify the agenda by adding/removing entries before applying tool operation. Return true if entries added or invalidated.virtual bool …

如何使用Scrapy和Python 3爬取网页

简介 网络爬虫&#xff0c;通常称为网络爬行或网络蜘蛛&#xff0c;是以编程方式浏览一系列网页并提取数据的行为&#xff0c;是处理网络数据的强大工具。 通过使用网络爬虫&#xff0c;您可以挖掘有关一组产品的数据&#xff0c;获取大量文本或定量数据以进行分析&#xff0…

1、FreeCAD概述与架构

FreeCAD介绍 FreeCAD的诞生&#xff1a;2002年10月29日&#xff0c;由Jrgen Riegel上传了版本0.0.1的初始上传。FreeCAD的维基百科页面显示&#xff0c;FreeCAD基本上是由不同强大的库组成的集合&#xff0c;其中最重要的是openCascade&#xff0c;用于管理和构建几何体&#x…

【Vue 2.x】学习vue之一基础部分

文章目录 Vue 一基础部分第一章1、git两个分支主分支子分支 使用方法方式1&#xff1a;采用命令的方式操作分支方式2&#xff1a;在idea中使用git的分支 向git远程仓库提交时忽略文件使用git时的一些冲突注意事项 2、Vue问题1&#xff1a;什么是Vue&#xff1f;问题2&#xff1…

泰勒创造力达到顶峰?(下)

上文说了一半&#xff0c;回顾看文&#xff1a; https://blog.csdn.net/weixin_41953346/article/details/138336524 继续看下文 “Like I lost my twin /Fuck it if I cant have him,"she sings in “Down Bad". 在《Down Bad》这首歌中&#xff0c;她唱道&#xff…

TiDB系列之:使用TiUP部署TiDB集群最新版本,同时部署TiCDC的详细步骤

TiDB系列之:使用TiUP部署TiDB集群最新版本,同时部署TiCDC的详细步骤 一、部署TiDB集群二、准备环境三、安装 TiUP四、安装TiUP cluster组件五、初始化包含TiCDC的TiDB集群拓扑文件六、检查和修复集群存在的潜在风险七、查看可以安装的tidb版本八、部署 TiDB 集群:九、查看集…

Activiti7 开发快速入门【2024版】

记录开发最核心的部分&#xff0c;理论结合业务实操减少废话&#xff0c;从未接触工作流快速带入开发。假设你是后端的同学学过JAVA和流程图&#xff0c;则可以继续向后看&#xff0c;否则先把基础课程书准备好先翻翻。 为什么要工作流 比起直接使用状态字段&#xff0c;工作…

工业互联网常用开源库

libopen62541 opc-ua开源库 libmodbus modbus开源库 libsocketcan can 开源库 canutils&#xff1a;ubuntu 中socket can 与can通道绑定命令ifconfig -a 查看当前can设备名如can0ip link set down can0ip link set can0 type can bitrate 5000ip link set up can0cansend ca…

【C++之多态的知识】

C学习笔记---018 C之多态的知识1、C多态的简单介绍1.1、多态的分类1.2、多态的构成条件 2、虚函数2.1、虚函数的重写(覆盖) 3、虚函数重写的两个例外3.1、协变&#xff1a;(基类与派生类虚函数返回值类型不同)3.2、析构函数的重写(基类与派生类析构函数的名字不同) 4、两个关键…

redis运维篇下篇

最近在学redis&#xff0c;由于笔者是学运维的&#xff0c;所以推荐学习运维的小伙伴参考&#xff0c;希望对大家有帮助&#xff01; redis运维篇上篇:http://t.csdnimg.cn/MfPud 附加redis多用户管理:http://t.csdnimg.cn/DY3yx 目录 十.redis慢日志 十一.redis的key的有效…

dvwa kali SQL注入

high: 1.txt的来源 1.txt的内容 手动添加&#xff1a; id1&SubmitSubmit 执行&#xff1a; sqlmap -r /root/1.txt -p id --second-url "http://192.168.159.128:20000/vulnerabilities/sqli_blind/" --batch medium&#xff1a; 换链接&#xff0c;换cook…

HDFS存取策略联系

书上关于这部分分了三个点&#xff1a; 1.数据存放 2.数据读取 3.数据复制 但数据存放和数据复制都是数据写操作过程中的&#xff0c;“存放”体现一种思想&#xff0c;“复制”体现过程&#xff0c;整个数据写操作过程如下&#xff1a; 1.分块&#xff1a;当客户端写入一个…

【JS篇之】异常

前言&#xff1a;在代码编写过程中&#xff0c;最常遇到的就是程序异常。其实异常并非坏事&#xff0c;它可以让开发人员及时发现、定位到错误&#xff0c;提醒我们做正确的事情&#xff0c;甚至在某些时候&#xff0c;我们还会手动抛出异常。 1.异常的分类 在JS中&#xff0…

2021 OWASP Top 10-零基础案例学习

文章目录 A01:2021 – 权限控制失效情境 #1: SQL 注入攻击风险风险与后果解决方案情境 #2: 未经授权的访问控制漏洞风险与后果解决方案 A02:2021 – 加密机制失效情境 #1: 自动解密的信用卡卡号与SQL注入情境 #2: 弱SSL/TLS使用与会话劫持情境 #3: 不安全的密码存储与彩虹表攻击…

http实现post请求时本地没问题,线上报413错误、nginx配置免费https、nginx反向代理

MENU 错误原因解决其他方式关于nginx的文章 错误原因 前端发送请求以后后端没有收到请求 而客户端却报了413错误 是请求实体过大的异常 如果请求夹带着文件就可能造成请求实体过大 那这里是什么原因造成的呢 在基础的后端开发中 都会用到nginx反向代理 默认大小为1M 超过1M都会…

LinkedList与链表

文章目录 ArrayList的缺陷链表链表的概念及结构链表的实现 LinkedList的使用什么是LinkedListLinkedList具体使用 ArrayList和LinkedList的区别 ArrayList的缺陷 通过源码知道&#xff0c;ArrayList底层使用数组来存储元素 由于其底层是一段连续空间&#xff0c;当在ArrayList任…

Windows 11 系统安装时如何跳过联网和逃避微软账号登录

问题描述 Windows 11 是从 22H2 版本之后开始强制联网何登录微软账号的。 这就带来两个问题&#xff1a; 1、如果我的电脑没有网络或者网卡驱动有问题&#xff0c;那就无法继续安装系统了。 2、如果我有强怕症&#xff0c;就是不想登录微软账号&#xff0c;害怕个人信息泄露…