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

分割两个字符串得到回文串[抽象--去除具体个性取共性需求]

抽象

  • 前言
  • 一、分割两个字符串得到回文串
  • 二、双指针
  • 总结
  • 参考文献

前言

抽象去个性留共性,是因为具体个性对于解决问题是个累赘。少了累赘,直击需求,才能进行问题转换或者逻辑转换。

一、分割两个字符串得到回文串

在这里插入图片描述

二、双指针

// 限定死了,在相同的下标处分开。
// 而其只要有一个能组成回文串即可。
// 回文是什么?前后对称相等。
// 暴力,从任何处分割,组合,再判定是否为回文串。
// ab两串相等,意味着分割之后组合的新字符串必定是和ab一样长的。
// 切割,能切几个算几个,反正字符串一样的就可以了,自字符串也好,它字符串也罢,管它谁提供的呐!解决问题足够抽象,没有感情!只有纯粹的需求。
// 一旦不能切了就只能看自己了。

func checkPalindromeFormation(a string, b string) bool {// 都是看别人家的尾吧是否合我的身子!return isVaild(a,b) || isVaild(b,a)}
// 先惦记别家的,再看自己有没;不能先用自己的,再惦记别家的,这不合规矩。
func isVaild(a,b string) bool {n := len(a)for i := 0;i < n >> 1;i++ {if a[i] != b[n - 1 - i] {// bug1:不一定是身子占主体,去惦记别人的字符;也有可能是尾巴占主体!return isPali(a,i) || isPali(b,i) // 以尾巴为主}}return true
}
func isPali(s string,start int) bool {n := len(s)for i := start;i < n >> 1;i++ {if s[i] != s[n - 1 - i] {return false}}return true
}

总结

1)有两类题,一类特点明显,可直觉看到特定类型的解法;一类需要具体分析,从背后发现潜在规律,寻找题解,这样一个完整的解题过程,该题属于第二种。
2)抛开具体的个性,直击需求,管它谁提供了这个需求,抽象成一种情况–提供需求。

参考文献

[1] LeetCode 分割两个字符串得到回文串

相关文章:

分割两个字符串得到回文串[抽象--去除具体个性取共性需求]

抽象前言一、分割两个字符串得到回文串二、双指针总结参考文献前言 抽象去个性留共性&#xff0c;是因为具体个性对于解决问题是个累赘。少了累赘&#xff0c;直击需求&#xff0c;才能进行问题转换或者逻辑转换。 一、分割两个字符串得到回文串 二、双指针 // 限定死了&…...

【LeetCode】1609. 奇偶树、1122. 数组的相对排序

作者&#xff1a;小卢 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 1609. 奇偶树 1609. 奇偶树 题目描述&#xff1a; 如果一棵二叉树满足下述几个条件&#x…...

【C++初阶】4. Date类的实现

如果下面博客有不理解的地方&#xff0c;可以查看源码&#xff1a;代码提交&#xff1a;日期类的实现 1. 构造函数的实现 由于系统实现的默认构造函数即便采用默认值的形式也只能存在1个固定的默认日期&#xff08;例如&#xff1a;1997-1-1&#xff09;。所以&#xff0c;构…...

ES6新特性--变量声明

可以使用let关键字来声明变量let a;let b,c;//同时声明多个变量let stu = 张三;let name =李四,age = 12;//声明变量的同时赋值 let关键字使用的注意事项(1).变量在声明的时候不可以重复,这也符合其他语言的变量声明规范 let name = 李四; let name = 张三;//这里开始报错,但…...

【Django】缓存机制

文章目录缓存的介绍Django的6种缓存方式开发调试缓存dummy.DummyCache内存缓存locmem.LocMemCache文件缓存filebased.FileBasedCache⭐️数据库缓存db.DatabaseCacheMemcache缓存memcached.MemcachedCacheMemcache缓存memcached.PyLibMCCacheDjango缓存的应用内存缓存cache_pag…...

我的创作纪念日——一年的时间可以改变很多

机缘 不知不觉来到CSDN已经创作一年了。打心底讲&#xff0c;对于在CSDN开始坚持创作的原因&#xff0c;我用一句话来概括最合适不过了——“无心插柳柳成荫” 为什么这么说呢&#xff1f; 这要从我的一篇博客说起——《输入命令Javac报错详解》&#xff1a; 那也是我第一次…...

Jetson Nano驱动机器人的左右两路电机

基于Jetson Nano板子搭建一个无人车&#xff0c;少不了减速电机驱动轮子滚动&#xff0c;那如何驱动呢&#xff1f;从Jetson.GPIO库文件来说&#xff0c;里面没有支持产生PWM的引脚&#xff0c;也就意味着Jetson nano没有硬件产生PWM的能力&#xff0c;所以我们不得不使用别的方…...

如何通过openssl生成公钥和私钥?

1、生成RSA秘钥的方法 生成RSA秘钥的方法&#xff1a; openssl genrsa -des3 -out privkey.pem 2048 注&#xff1a;建议用2048位秘钥&#xff0c;少于此可能会不安全或很快将不安全。 这个命令会生成一个2048位的秘钥&#xff0c;同时有一个des3方法加密的密码&#xff0c…...

Verilog的If语句和Case语句

这篇文章将讨论 verilog 中两个最常用的结构----if语句和case语句。在之前的文章中学习了如何使用过程块&#xff08;例如always块&#xff09;来编写按顺序执行的verilog 代码。此外还可以在过程块中使用许多语句----统称为顺序语句&#xff0c;如case 语句和 if 语句。这篇文…...

HJ31 单词倒排

描述 对字符串中的所有单词进行倒排。 说明&#xff1a; 1、构成单词的字符只有26个大写或小写英文字母&#xff1b; 2、非构成单词的字符均视为单词间隔符&#xff1b; 3、要求倒排后的单词间隔符以一个空格表示&#xff1b;如果原字符串中相邻单词间有多个间隔符时&#xf…...

leetcode——203.移除链表元素

文章目录&#x1f428;1.题目&#x1fa85;2.解法1-头节点迭代&#x1f33f;2.1 思路&#x1f33f;2.2 代码实现&#x1f986;3. 解法2-创建新链表&#x1f38f;3.1 思路&#x1f38f;3.2 代码实现&#x1f410;4. 题目链接&#x1f428;1.题目 给你一个链表的头节点head和一个…...

GPT-4来袭:开启人工智能新时代

文章目录介绍GPT4 模型演示示例示例 1示例 2示例 3示例 4示例 5最后Reference介绍 2023年3月15日&#xff0c;OpenAI公司正式发布了先进的自然语言处理模型GPT-4&#xff0c;前不久发布的GPT-3.5模型只能理解文字的语言模型&#xff0c;而新发布的GPT4则是多模态模型&#xff…...

芯微电子IPO终止:业绩开始大幅下滑,王日新、王苟新兄弟不同命

近日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;黄山芯微电子股份有限公司&#xff08;下称“芯微电子”&#xff09;申请撤回发行上市申请文件。因此&#xff0c;深圳证券交易所决定终止对其首次公开发行股票并在创业板上市的审核。 据贝多财经了解&#xff0c;芯…...

【C++】用手搓的红黑树手搓set和map

目录 一、set/map的底层结构 1、set/map的源码 2、利用模板区分set/map 3、利用仿函数控制比较大小 二、set/map的迭代器&#xff08;红黑树的迭代器&#xff09; 1、红黑树的begin、end迭代器 2、红黑树迭代器的operator 3、红黑树迭代器的operator-- 三、set的const…...

【C++】空指针弃NULL用nullptr

空指针&#xff08;null pointer&#xff09;不指向任何对象&#xff0c;在试图使用一个指针之前代码可以首先检查它是否为空。声明空指针的3种方法&#xff1a; int* p1 NULL; int* p2 nullptr; int* p3 0; 在C语言中常用NULL生成空指针&#xff0c;NULL是一个宏&#xf…...

【selenium学习】数据驱动测试

数据驱动在 unittest 中&#xff0c;使用读取数据文件来实现参数化可以吗&#xff1f;当然可以。这里以读取 CSV文件为例。创建一个 baidu_data.csv 文件&#xff0c;如图所示&#xff1a;文件第一列为测试用例名称&#xff0c;第二例为搜索的关键字。接下来创建 test_baidu_da…...

嵌入式硬件电路设计的基本技巧

目录 1 分模块 2 标注关键参数 3 电阻/电容/电感/磁珠的注释 4 可维修性 5 BOM表归一化 6 电源和地的符号 7 测试点 8 网络标号 9 容错性/兼容性 10 NC、NF 11 版本变更 12 悬空引脚 13 可扩展性 14 防呆 15 信号的流向 16 PCB走线建议 17 不使用\表示取反 不…...

Spring MVC 图片的上传和下载

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

远程工具神器之MobaXterm (小白必看)

目录 1、介绍 2、ssh连接详解过程 3、特点 1、介绍 带有 X11 服务器、选项卡式 SSH 客户端、网络工具等的 Windows 增强型终端。 MobaXterm 是您远程计算的终极工具箱。在单个Windows应用程序中&#xff0c;它提供了大量功能&#xff0c;这些功能是为程序员&#xff0c;网站管…...

VRIK+Unity XR Interaction Toolkit 实现VR上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)

文章目录&#x1f4d5;第一步&#xff1a;配置 OpenXR XR Interaction Toolkit 的开发环境&#x1f4d5;第二步&#xff1a;导入人物模型⭐VRM 模型导入 Unity 的方法&#x1f4d5;第三步&#xff1a;配置 VRIK⭐给模型加上 VRIK 组件⭐将模型的头部和手部的位置作为 VR 追踪目…...

【C++进阶】map的介绍和使用

文章目录map的介绍map的模板参数介绍map的容器介绍map重要容器接口的介绍及使用构造函数增删查改迭代器的使用map的介绍 map是关联容器&#xff0c;它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。在map中&#xff0c;键值key通常用于排序和惟一地标识…...

第十四届蓝桥杯三月真题刷题训练——第 15 天

目录 第 1 题&#xff1a;斐波那契与7 问题描述 答案提交 运行限制 代码&#xff1a; 第 2 题&#xff1a;小蓝做实验 问题描述 答案提交 运行限制 代码&#xff1a; 第 1 题&#xff1a;斐波那契与7 问题描述 斐波那契数列的递推公式为: FnFn−1Fn−2​, 其中 F1F21…...

HTML5是什么?怎么学习HTML5?

HTML5 是什么&#xff1f;HTML5是什么&#xff1f;相信这个问题并不容易回答&#xff0c;大多数人对于HTML5的概念仅仅是听说过而已&#xff0c;非要让他说出个所以然来&#xff0c;结果只能让你失望。相比普及了近十四年的HTML4来说&#xff0c;HTML5带来的震撼其实丝毫不亚于…...

个人算法题精简导航整理(精炼汇总,含知识点、模板题、题单)

文章目录前言导航注意事项技巧类自定义Pair排序N维数组转一维位运算状态压缩算法基础枚举 √指数型枚举排列型枚举组合型枚举模拟 √日期天数问题&#xff1a;平年闰年情况递归&分治 √贪心 √货仓选址-模板题排序 √归并排序前缀和&差分 √前缀和差分&#xff08;一维…...

Mac 和 Win,到底用哪个系统学编程?

今天来聊一个老生常谈的问题&#xff0c;学编程时到底选择什么操作系统&#xff1f;Mac、Windows&#xff0c;还是别的什么。。 作为一个每种操作系统都用过很多年的程序员&#xff0c;我会结合我自己的经历来给大家一些参考和建议。 接下来先分别聊聊每种操作系统的优点和不…...

文心一言---中国版的“ChatGPT”狂飙的机会或许要出现了

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…...

2023最全Python+Selenium环境搭建教程-你绝对想不到有这么简单!

还有视频版本结合项目实战介绍&#xff0c;轻松学习&#xff01; PythonSelenium自动化测试环境搭建Web自动化测试全套教程_哔哩哔哩_bilibiliPythonSelenium自动化测试环境搭建Web自动化测试全套教程共计180条视频&#xff0c;包括&#xff1a;1、Web自动化测试需求和挑战、2…...

JavaSe第10次笔记

1.Java中&#xff0c;static不能修饰局部变量。 2.构造代码块&#xff1a;可用于成员变量的赋值&#xff0c;但需要注意的是&#xff0c;构造代码块最先执行(比构造方法先)。 3.静态代码块(可用于静态成员变量赋值)&#xff1a;写法如下 static { 静态成员操作; } (比构造…...

【C语言笔记】自定义类型全解

【C语言笔记】自定义类型全解一、结构体1、什么是结构体2、结构体的声明与定义2.1、结构体的声明2.2、对结构体成员的访问2.3、对结构体成员的初始化2.4、结构体的不完整声明2.5、结构体嵌套定义3、结构体的自引用3.1、错误的自引用3.2、正确的自引用4、结构体大小的计算4.1、结…...

文心一言硬刚ChatGPT。文心一言能否为百度止颓?中国版ChatGPT“狂飙”的机会在哪儿?

一.文心一言介绍 今天&#xff0c;3月16日消息&#xff0c;百度于北京总部召开新闻发布会&#xff0c;主题围绕新一代大语言模型、生成式AI产品文心一言。百度首席技术官王海峰现在详解了文心一言背后的文心大模型及技术特性。 文心一言是新一代知识增强大语言模型&#xff0…...