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

photoshop怎么做网站草图app优化推广

photoshop怎么做网站草图,app优化推广,自媒体平台哪个好,免费做网站的平台回文在字符串中是一个非常常考的知识点,本题很考验思维和细节处理,可以作为回文问题的很好练习,后续也会总结一些字符串中回文的常见处理技巧和考法 目录 一、题目 二、思路解析 1. 允许的操作: 2. 我们将字符串划分为3部分&…

回文在字符串中是一个非常常考的知识点,本题很考验思维和细节处理,可以作为回文问题的很好练习,后续也会总结一些字符串中回文的常见处理技巧和考法

目录

一、题目

二、思路解析

1. 允许的操作:

2.  我们将字符串划分为3部分:

3.  中间必须是回文:

4.  左侧是否匹配?

步骤如下:

5. 最终判断

三、知识点补充

1. 回文串判断

2. 字符串前缀/后缀提取

3. 模拟类字符串题常见技巧

四、代码


一、题目

P10905 [蓝桥杯 2024 省 C] 回文字符串 - 洛谷

二、思路解析

本题的关键在于理解允许的操作和回文串的定义:

1. 允许的操作:

只能在字符串的开头添加字符 'l''q''b'

这意味着我们可以"填补"原字符串的左边部分,而右边不能动

我们先思考:如果我们能在两端都插字符,那我们一定可以对称地填补每一侧,使其回文。

但由于限制只能在左边插,所以我们只能模拟“构造对称的左半边”:

2.  我们将字符串划分为3部分:

题目明确要求我们在左端添加字符的时候只能添加l ,q ,b 三种,所以:

(1)右端连续的l ,q ,b肯定可以被匹配,我们单独拎出来

(2)左端连续的l ,q ,b取决于在现有的(因为我们无法再在右端添加字符了)右端连续部分能否给它匹配,如果能则没问题,否则不合法

(3)剩余的中间部分必须得自己构成回文

故划分方式如下:

  • 左端(s1):开头连续的 'l''q''b' 字符

  • 右端(s3):结尾连续的 'l''q''b' 字符

  • 中间(s2):剩下的部分

3.  中间必须是回文:

中间部分 s2 是我们既不能删也不能改的核心部分。

如果 s2 不是回文串,那无论你怎么填左边都没用

4.  左侧是否匹配?

步骤如下:
  1. 检查左边连续的 lqb 部分(s1)是否能被右边的 lqb(s3)匹配掉

    • 因为我们只能在左边添加 lqb,所以我们不能用超过右边已有的字符

    • 换句话说:左边已有的 lqb 部分必须“能被右边覆盖”,才能形成对称

5. 最终判断

只有同时满足下面上面条件的字符串才能输出 “Yes”:

  1. 中间 s2 是回文串

  2. 左端已有的合法字符 s1 能被右端 s3 中的字符镜像匹配

三、知识点补充

1. 回文串判断

最常见的方法是双指针法:一个从左一个从右,逐字符比较

2. 字符串前缀/后缀提取

通过遍历 s 字符串前后,提取出所有的合法字符(即 lqb)

3. 模拟类字符串题常见技巧

  • 字符提取和分段:识别出具有意义的字符串片段

  • 子串处理:如 s.substr(start, len) 高效提取区间

  • 模拟构造:将操作的限制通过条件逻辑写代码

  • 双指针:处理对称性、滑动窗口、区间匹配等

四、代码

//只能在左侧连续添加,所以只能允许右端连续部分无法构成回文串
//且无法构成回文串的部分只包含l,q,b
//先去掉右端连续包含l,q,b的部分,看剩下的能否匹配 
//此时要注意左端连续部分有可能要和去掉的右端连续部分匹配
//所以还要判断左端连续l,q,b部分能否被匹配 
//注意:不是所有回文串都是按照先逆序再找公共子序列 
#include <iostream>
#include <cstring>
using namespace std;
int n;//判断是否是回文串 
bool check(string s)
{int n=s.size();int i=0,j=n-1;while(i<j){if(s[i]!=s[j]) return false;i++;j--;}return true;
}int main()
{cin>>n;for(int m=1;m<=n;m++){bool flag=true;string s;//原始字符串cin>>s;int n=s.size();string s1,s2,s3;//左端lqb连续部分,中间,右端lqb连续部分//左端连续lqb//i:停留在左端第一个不匹配的位置 int i,j;for(i=0;i<n;i++){if(s[i]=='l'||s[i]=='q'||s[i]=='b') s1+=s[i];else break;}//右端连续lqb//j:停留在右端第一个不匹配的位置 for(j=n-1;j>=0;j--){if(s[j]=='l'||s[j]=='q'||s[j]=='b') s3+=s[j];else break;}//substr:(i,len)//中间 s2=s.substr(i,j-i+1);//检查中间是否是回文串if(!check(s2)) flag=false;//检查左端已有连续lqb部分能否被右端完全匹配//s1和s3都倒序匹配 //指向s1 i=s1.size()-1;//指向s3j=s3.size()-1; while(i>=0&&j>=0&&s1[i]==s3[j]){i--;j--;}if(i>=0) flag=false;//左端不能被右端完全匹配 //输出 if(flag) cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;
}
  • 这道题考察了字符串模拟处理回文串判断双指针思想

  • 在保证中间部分为回文串的同时,我们还要关注边界拼接对称性

  • 注意细节:右端的连续部分既是参考标准,也是判断左端合法性的依据

如果你喜欢这种题解风格,欢迎关注我的博客/专栏,我会持续更新高质量的题解与算法思维讲解

http://www.dtcms.com/wzjs/520460.html

相关文章:

  • dw个人网站设计模板免费百度竞价排名收费
  • 深圳网站快速备案广西seo公司
  • VIP视频自助网站建设企业seo推广
  • 网站开发好做吗软件外包公司有哪些
  • 网站 空间 域名最近一周新闻热点大事件
  • 网站目录结构怎么做金阊seo网站优化软件
  • 网站设计制作一条龙免费国际新闻最新消息十条摘抄
  • 南宁哪个公司做网站建设制作网站的软件
  • 南昌英文网站建设百度网盘下载官网
  • 三亚市住房和城乡建设局seo在线优化网站
  • 知名的网站建设公司开网店
  • 深圳设计网站哪个好数据统计网站有哪些
  • 注册网站英语怎么说游戏广告推广平台
  • 赤峰网站制作外包公司怎么赚钱
  • 修改网站需要什么什么是电商平台推广
  • 专业苏州网站建设手机seo快速排名
  • 南昌网站建设多少钱注册域名的步骤
  • 网站短链接怎么做的it教育培训机构
  • 重庆网站编辑职业学校天气预报最新天气预报
  • 企业网站建设电话网站推广优化外包便宜
  • 随申行是国企嘛?优化二十条
  • 网站接入协议及接入商资质深圳百度seo公司
  • wow电影在线观看seo 视频
  • 合肥网站建设设计公司哪家好电商网站建设教程
  • joomla可以做预订类网站吗河北网络推广技术
  • 问答网站建设杭州seo公司哪家好
  • 专科网站建设论文中国十大网站
  • 轻松seo优化排名 快排江苏seo推广
  • 反腐网站建设的目的查域名的网址
  • 如何做下载网站长沙网站建站模板