力扣题库刷题笔记647-回文子串

news/2024/10/30 11:21:36/

1、题目如下:

2、个人Python代码实现

 

         思路如下:

        a、以切片的形式,判断每个子字符串是否为回文字符串。这里如何确定切片的起始下标就很重要了

        b、首先需要知道的是字符串s,s[i,j],指的是从下标i开始,到下标s[j-1]为止。例如s = '123456789', s[2,5]指的是下标为2开始,下标4截至,即345。所以进行切片时,在最后的循环中,需要切片到len(s) + 1才行

        c、其次,起始下标相对简单,通过第一个for循环遍历,用i做起始下标

        d、然后确定终止下标,终止下标用第2个for循环,用i+j作为终止下标进行切片。这里让我不断调试的点在于确定第2个for循环的循环次数。首先是,空字符串逆序后也是空字符串,所以需要排除空字符串的干扰,所以i+j一定要大于i,j必须从1开始循环。最后,由于i+j的最大值一定是字符串长度+1(原因见b,这样才能使得在每一次外循环的最后一次循环,切片为s[i:len(s)+1],也就是等价于s[i:])。这一句话可以转移为: i+j的最大值为len(s) + 1,所以内部循环的循环次数就是len(s)+1-i。

        代码如下:

class Solution:

    def countSubstrings(self, s: str) -> int:

        ans = 0                                             #用于输出结果

        for i in range(len(s)):                             #用于确定切片的起始下标

            for j in range(1, len(s)+1-i):                  #用于确定切片的终止下标

                if s[i:i+j] == s[i:i+j][::-1]:              #当切片字符串与其逆序的字符串相同时,就是回文字符串,此时ans+1

                    ans += 1

        return ans

3、知识点:字符串逆序

        这个点我经常会忘记怎么处理,所以这里一并做个笔记。常用的方式如下:

 


http://www.ppmy.cn/news/60396.html

相关文章

将 FileNet 迁移到 AWS 云并将 FileNet 安全性迁移到 AWS 云

FileNet 是一个企业内容管理系统,旨在帮助组织管理和存储大量内容,包括文档、图像和多媒体文件。AWS 是一个云计算平台,提供广泛的基础设施服务,包括计算、存储和数据库。将 FileNet 迁移到 AWS 云可以提供多种好处,包…

Nginx配置使用GeoIP2模块

一、Nginx简介 Nginx(engine x)是一个免费的、开源的、高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个…

SpringBoot整合Mybatis-Plus、Jwt实现登录token设置

Spring Boot整合Mybatis-plus实现登录常常需要使用JWT来生成用户的token并设置用户权限的拦截器。本文将为您介绍JWT的核心讲解、示例代码和使用规范,以及如何实现token的生成和拦截器的使用。 一、JWT的核心讲解 JWT(JSON Web Token)是一种…

认识机器学习与深度学习

目录 1. 认识机器学习 1.1 什么是机器学习? 1.2 机器学习可以解决的问题 1.3 机器学习的基础知识 2. 认识深度学习 2.1 什么是深度学习? 2.2 深度学习能做什么? 2.3 深度学习的基础知识 2.4 深度学习的神经网络种类 3. 总结 1. 认识…

mysql UNION ALL

UNION ALL 操作符可以连接两张字段不同的表,但是连接前需要满足以下条件: - 两张表的列数必须相同 - 两张表对应的列的数据类型必须兼容 如果以上条件不满足,则在进行联合操作时会发生错误。在进行联合操作时,如果表A的字段和表…

Vue.js核心概念简介:组件、数据绑定、指令和事件处理

本文介绍了Vue.js的四个核心概念:组件、数据绑定、指令和事件处理。每个概念都通过一个简单的示例进行了详细的解释。通过学习这些概念,您将能够充分利用Vue.js的强大功能,构建高效、灵活的Web应用程序。 1 组件 组件是Vue.js的核心概念之一…

体验 Dolly V2

体验 Dolly V2 1. 什么是 Dolly V22. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 部署 Dolly V26. 编写测试程序7. 运行测试程序 1. 什么是 Dolly V2 Databricks的dolly-v2-12b,是一个在 Databricks 机器学习平台上训练的指令跟随型大型语言模型,…

自动化测试工具的基本原理以及应用场景

自动化测试工具是现代软件开发流程中必不可少的组成部分,它可以通过编写脚本或使用图形用户界面工具自动化测试过程,提高测试的效率和准确性。本文将介绍自动化测试工具的基本原理以及应用场景。 自动化测试工具的基本原理 自动化测试工具通常采用的原理…