首页 > 其他分享 >LCR 020. 回文子串(中等)(主站647)

LCR 020. 回文子串(中等)(主站647)

时间:2024-11-19 16:45:02浏览次数:3  
标签:cnt right LCR int 主站 ss 020 ans 复杂度

https://leetcode.cn/problems/a7VOhD/
https://leetcode.cn/problems/palindromic-substrings/
难度:☆☆☆

题目:

给定一个字符串 s ,请计算这个字符串中有多少个回文子字符串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

示例:

输入:s = “abc”
输出:3

输入:s = “aaa”
输出:6
解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”

方法1:字符串,暴力遍历

Python
时间复杂度:O(N3)。
空间复杂度:O(n)。

class Solution:
    def countSubstrings(self, s: str) -> int:
        cnt = 0
        for i in range(len(s)):
            for j in range(i + 1, len(s) + 1):
                if s[i:j] == s[i:j][::-1]:
                    cnt += 1
        return cnt

Java
时间复杂度:O(N3)。
空间复杂度:O(n2)。

class Solution {
    public int countSubstrings(String s) {
        int cnt = 0;
        for (int i = 0; i < s.length(); i++) {
            for (int j = i + 1; j < s.length() + 1; j++) {
                if (s.substring(i, j).toString().contentEquals(new StringBuilder(s.substring(i, j)).reverse())) {
                    cnt++;
                }
            }
        }
        return cnt;
    }
}

方法2:字符串,逆向双指针+中心扩展

先定好一个位置,然后向两端扩展,左右字符相等一次即是一个回文字符串,相等一次就加1。
注意回文有单中心和双中心2种情况。
Python
时间复杂度:O(N2)。
空间复杂度:O(1)。

class Solution:
    def countSubstrings(self, s: str) -> int:
        ans = 0
        n = len(s)
        for i in range(n):
            ans += self.isPalindrome(s, i, i)
            ans += self.isPalindrome(s, i, i + 1)
        return ans
    
    def isPalindrome(self, ss, left, right):
        nn = len(ss)
        cnt = 0
        while left >=0 and right < nn and ss[left] == ss[right]:
            cnt += 1
            left -= 1
            right += 1
        return cnt

Java
时间复杂度:O(N2)。
空间复杂度:O(1)

class Solution {
    public int countSubstrings(String s) {
        int ans = 0;
        int n = s.length();
        for (int i = 0; i < n; i++) {
            ans += isPalindrome(s, i, i);
            ans += isPalindrome(s, i, i + 1);
        }
        return ans;
    }
    public int isPalindrome(String ss, int left, int right) {
        int cnt = 0;
        while (left >= 0 && right < ss.length() && ss.charAt(left) == ss.charAt(right)) {
            cnt++;
            left--;
            right++;
        }
        return cnt;
    }
}

标签:cnt,right,LCR,int,主站,ss,020,ans,复杂度
From: https://blog.csdn.net/weixin_43606146/article/details/143871980

相关文章

  • [BJDCTF2020]ZJCTF,不过如此
    题目链接:[BJDCTF2020]ZJCTF,不过如此。打开环境,如下所示。一个简单的伪协议,直接使用Data伪协议即可通过检测,随后使用文件包含来查看next.php文件源码。Payload:?text=data://text/plain;base64,SSBoYXZlIGEgZHJlYW0=&file=php://filter/read=convert.base64-encode/resource......
  • Profinet转CC-Link IEFB主站协议网关功能及配置
    在现代工业自动化领域,Profinet转CC-LinkIEFB的互联互通至关重要,远创智控YC-CCLKIEM-PN设备是优秀的解决方案。它拥有高效协议转换能力,带来便捷体验,提升企业生产效率与智能化水平。主要功能包括精准的数据转换和传输。突出特点与优势有性能稳定可靠、操作简易。技术参数涵盖传......
  • 【软考】系统架构设计师-2020年下半年下午案例真题及答案
    全国计算机技术与软件专业技术资格(水平)考试高级系统架构设计师2020年下半年下午试卷 案例试题一 某公司拟开发一套在线软件开发系统,支持用户通过浏览器在线进行软件开发活动。该系统的主要功能包括代码编辑、语法高亮显示、代码编译、系统调试、代码仓库管理等。......
  • 2020年计挑赛往届真题(C++)
    因为17号要开赛了,甚至是用云端编辑器,debuff拉满,只能临时抱佛脚了各个选择题的选择项我就不标出来了,默认ABCD排,手打太麻烦了目录单选题:1.阅读以下语句:doublem=0;for(inti=3;i>0;i--)m+=1/i;将m保留三位小数输出,结果为()2.下列选项中,不是C++关键字的是()    3.下列选......
  • GB 9706.1-2020医疗器械安规测试项目有哪些?
    医疗器械安规测试项目包括以下几项:1、结构检查与测试:测试设备的结构是否符合标准要求,包括各个部件的连接、固定、防护等。2、电源电压适应性:测试设备在规定范围内的电源电压下是否能正常工作。3、绝缘电阻:测试设备的绝缘材料电阻值是否符合标准要求,以避免电流泄漏和电击......
  • LCR 016. 无重复字符的最长子串(中等)(主站3)
    https://leetcode.cn/problems/wtcaE1/https://leetcode.cn/problems/longest-substring-without-repeating-characters/难度:☆☆☆题目:给定一个字符串s,请你找出其中不含有重复字符的最长连续子字符串的长度。示例:输入:s=“abcabcbb”输出:3输入:s=“b......
  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
    目录文献基本信息序言1发展概况2 重点技术发展2.1人工智能技术2.1.1应用深化2.1.2 作战效能提升2.2 航空技术2.2.1螺旋桨设计创新2.2.2发射回收技术进步2.3 其他相关技术2.3.1远程控制技术探2.3.2 云地控制平台应用3装备系统进展3.1 无人作战飞机3......
  • 2020-2024 Rider安装+激活
    一、下载1.rider各版本官方下载入口rider官网下载地址2.选择左边,然后点击【20xx.x.x-Windows(exe)】PS:如需下载特定版本,可以往下拉,都是选择【202x.x-Windows(exe)】下载二、安装1.点击运行ps:安全警告是部分电脑有,没有跳过就可以了~2.点击下一步3.选择安装路径......
  • P6628 [省选联考 2020 B 卷] 丁香之路 题解
    P6628[省选联考2020B卷]丁香之路题解首先考虑题目中路径权值的含义:\(i,j\)两点之间的最短路就是\(|i-j|\)直接连边。题目要求从\(s\)遍历到每个点,到终点每个\(x\)的最短时间。于是我们不妨枚举每个\(x\),考虑在\(O(n)\)至\(O(n\logn)\)的时间复杂度里解决问题......
  • [GYCTF2020]Blacklist 1
    [GYCTF2020]Blacklist1打开实例发现get提交框,提交1发现显示尝试万能密码无果尝试联合注入,显示出了过滤规则,可以见到很多关键字都被过滤了尝试堆叠注入,成功显示出数据表?inject=1';showdatabases;查表?inject=1';usectftraining;showtables;看到了个FLAG_TABLE......