分割两个字符串得到回文串[抽象--去除具体个性取共性需求]
抽象
- 前言
- 一、分割两个字符串得到回文串
- 二、双指针
- 总结
- 参考文献
前言
抽象去个性留共性,是因为具体个性对于解决问题是个累赘。少了累赘,直击需求,才能进行问题转换或者逻辑转换。
一、分割两个字符串得到回文串
二、双指针
// 限定死了,在相同的下标处分开。
// 而其只要有一个能组成回文串即可。
// 回文是什么?前后对称相等。
// 暴力,从任何处分割,组合,再判定是否为回文串。
// 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 分割两个字符串得到回文串
分割两个字符串得到回文串[抽象--去除具体个性取共性需求]相关推荐
- LeetCode 1616. 分割两个字符串得到回文串
文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 a 和 b ,它们长度相同. 请你选择一个下标,将两个字符串都在 相同的下标 分割开. 由 a 可以得到两个字符串: aprefix 和 ...
- 力扣--让字符串成为回文串的最少插入次数
力扣–让字符串成为回文串的最少插入次数 文章目录 力扣--让字符串成为回文串的最少插入次数 一.题目描述 二.分析 三.代码 相关题目: 腾讯–构造回文:腾讯–构造回文 最长回文子串和回文链表:最长回 ...
- leetcode 高薪_利用两种不同的方法解LeetCode第1312题:让字符串成为回文串的最少插入次数
题目描述(难度困难) 给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符.请你返回让 s 成为回文串的 最少操作次数 . 「回文串」是正读和反读都相同的字符串. 示例 1: 输入: ...
- 字符串-验证回文串(双指针法)
注: 回文串"是一个正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串. 题意: 给定一个字符串,验证它是否是回文串,只考虑字 ...
- 字符串处理 —— 回文串相关 —— Manacher 算法
[概述] Manacher 算法又称马拉车算法,用于求最长回文子串. 对于最长回文子串传统的求法的求法是以每个字符为中心,向两边寻找回文子串,在遍历完整个数组后即可得到最长回文子串,其时间复杂度为 O ...
- 字符串处理 —— 回文串相关 —— 添加/删除字符后是否为回文串
[问题] 给定一个字符串,问对该字符串,是否能通过添加一个字符后变为回文串. 若可以,输出 YES,否则输出 NO 对于该问题,首先要明白,删除一个字符与添加一个字符在判断回文串中是等价的. [暴力枚 ...
- 字符串处理 —— 回文串相关 —— 求最长回文子串
[暴力枚举] 求最长回文串最容易的方法就是暴力枚举,求出字符串的每一个子串,然后判断是不是回文,找到最长的那个回文串 求每一个子串的时间复杂度为 O(N^2),判断一个子串是不是回文时间复杂度为 O( ...
- 字符串--验证回文串
问题来源:力扣算法面试汇总 问题描述:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 例子: 输入: "A ...
- LeetCode 1312. 让字符串成为回文串的最少插入次数(区间DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符. 请你返回让 s 成为回文串的 最少操作次数 . 「回文串」是正读和反读都相同的字 ...
最新文章
- 中国内地高校ESI排名出炉:342所大学上榜
- 中国机器翻译的世纪回顾
- 泉州服务器维修,泉州云服务器
- 8.Layout布局应用
- QT的QUrl类的使用
- Android Canvas绘制带箭头的直线
- hive 导出json格式 文件_hive支持json格式的数据
- hadoop2.8配置_Hadoop2.8.2安装与配置(单机)
- vscode 构建Python ,和C++ 开发环境
- [国家集训队]聪聪可可
- 微星 B450M MORTAR 盲刷BIOS
- 对应阻尼下的开环增益matlab,自动控制原理实验指导书MATLAB版解析.doc
- 什么是数据可视化技术
- Windows10系统自带的五笔输入法替换98字库
- 通过查看Qt助手(QtAssistant)了解并使用自己需要Qt库
- 计算机中bcd的中文意思,BCD码
- 苹果6现在多少钱_2020年苹果价格多少钱一斤?苹果种植成本利润分析
- 每天五分钟机器学习:如何使用单个神经元实现逻辑与、或的计算
- 背景差分运动目标检测
- ND4J/DL4J的内存管理:工作原理