高效判断回文子串技巧
技巧 高效 判断 回文 子串
2023-06-13 09:13:10 时间
今天学习到一个新的技巧来快速判断回文子串:该方法是通过中心扩展来高效判断是否是回文字符串。回文字符串分为奇回文和偶回文,其中奇回文的中心只有一个,偶回文的中心有两个,所以通过遍历中心来左右扩展判断回文字符串。假设字符串的长度为n,那么如果是奇回文,中心个数就是n个;如果是偶回文,中心个数就是n - 1个,那么总共需要遍历的中心个数就是2n - 1个。其中每次遍历中心的left,right分别是i / 2,i / 2 + i mod 2,如果是回文字符串就left--, right++的往左右两边扩散。此方法的时间复杂度是O(N²),因为枚举每个中心需要O(N)的复杂度,每个中心扩展又需要O(N)的复杂度,所以总的时间复杂度是O(N²)
具体代码如下:
func countSubstrings(s string) int {
n := len(s)
res := 0
for i := 0; i < 2 * n - 1; i++ {
l, r := i / 2, i / 2 + i % 2
for l >= 0 && r < n && s[l] == s[r] {
res++
l--
r++
}
}
return res
}
相关文章
- Go 语言学习技巧和编程思维
- Pandas | 5 种技巧高效利用value-counts
- React组件复用的技巧
- WordPress 技巧:自定义附件的固定链接
- Oracle实现列转行的技巧(oracle的列转行)
- 存储MySQL 存储数字字段的技巧(mysql字段数字)
- 字符Linux下实现行字符替换技巧(linux替换整行)
- MySQL日期查询优化技巧:快速提高效率(mysql日期查询优化)
- 高效查询:MySQL 占位符的使用技巧(mysql占位符)
- 轻松学会linux锐捷登录,掌握高效办公技巧(linux锐捷登录)
- 快如闪电!学习MySQL批量插入技巧,让你高效处理大批量数据。(mysql批量插入)
- Linux技巧:创建目录链接快速实现文件管理(linux创建目录链接)
- 高效处理大数据!Mongodb 批量写入技巧大揭秘!(mongodb批量写入)
- Oracle高效遍历技巧及实战(oracle遍历)
- 【SQLServer恢复表技巧:助你实现数据高效恢复】(恢复表sqlserver)
- 高效执行脚本,学习mongodb的技巧(mongodb执行脚本)
- Oracle高效跨表查询的技巧分享(oracle跨表查询)
- 深入解析Linux线程池实现原理,掌握高效编程技巧(linux线程池实现原理)
- 处理突破MSSQL极限:高并发环境下的处理技巧(mssql 高并发)
- 高效浏览数据,掌握技巧MySQL中的分页显示实现方法(mysql中分页显示)
- 掌握Redis学习更高效的操作技巧(操作redis的方式)
- MySQL去重技巧优化海量数据操作,轻松应对一百亿级别数据去重(mysql 一百亿 去重)
- 高效的MySQL查询技巧避免使用不包含关键字(mysql 不包含关键字)
- MySQL三部曲掌握数据库基础高效调优技巧与备份恢复方法(mysql三部曲)
- 技巧精通Redis核心配置技巧(redis 配置核心)
- Redis进阶之路无坚不摧的高效技巧(redis进阶技巧)
- 项目实践之javascript技巧