题目描述:

Given a string, your task is to count how many palindromic substrings in this string.

The substrings with different start indexes or end indexes are counted as different substrings even they consist of same characters.

Example 1:

Input: "abc"
Output: 3
Explanation: Three palindromic strings: "a", "b", "c".

Example 2:

Input: "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".

解题思路:

本体主要是考察s中每个子字符串是否是回文字符串,有两种方法:

1.是确定子字符串的首尾,判断是否为回文字符串。

2.以每个字符为中心,向两端延伸判断是否相等,相等时回文字符串个数加一,不相等时终止内层循环。

相比较而言,第二种方法效率更高,可以更快终止遍历。

代码:

 1 class Solution {
 2 public:
 3     int countSubstrings(string s) {
 4         int ret = s.size();
 5         int j;
 6         for (int i = 0; i < s.size(); i++){
 7             for (int j = i + 1; j < s.size(); ++j) {
 8                 if (s[i] != s[j])
 9                     continue;
10                 else
11                     if (check(s, i, j))
12                         ret++;
13             }
14         }
15         return ret;
16     }
17     bool check(const string& s, int left, int right) {
18         int i = left;
19         int j = right;
20         for(;i <= j; i++, j--) {
21             if (s[i] != s[j])
22                 return false;
23         }
24         return true;
25     }
26 };

View Code

 1 class Solution {
 2 public:
 3     int countSubstrings(string s) {
 4         int ret = 0;
 5         for (int i = 0; i < s.size(); i++) {
 6             ret += check(s, i, i);
 7             ret += check(s, i, i+1);
 8         }
 9         return ret;
10     }
11     int check(const string& s, int left, int right) {
12         int num = 0;
13         while (left>=0 && right<s.size() && s[left--]==s[right++])
14             num++;
15         return num;
16     }
17 };

View Code

class Solution {public:    int countSubstrings(string s) {        int ret = 0;        for (int i = 0; i < s.size(); i++) {            ret += check(s, i, i);            ret += check(s, i, i+1);        }        return ret;    }    int check(const string& s, int left, int right) {        int num = 0;        while (left>=0 && right<s.size() && s[left--]==s[right++])            num++;        return num;    }};

转载于:https://www.cnblogs.com/gsz-/p/9538491.html

647. Palindromic Substrings相关推荐

  1. 【动态规划 回文串13】LeetCode 647. Palindromic Substrings

    LeetCode 647. Palindromic Substrings Solution1:我的答案 动态规划,易解 class Solution { public:int countSubstri ...

  2. LeetCode 647. Palindromic Substrings

    Given a string, your task is to count how many palindromic substrings in this string. The substrings ...

  3. leetcode题解-647. Palindromic Substrings 5. Longest Palindromic Substring

    题目: Given a string, your task is to count how many palindromic substrings in this string.The substri ...

  4. 647. Palindromic Substrings 回文子串

    给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串. 示例 1: 输入:"abc" 输出: ...

  5. 31/100. Palindromic Substrings

    DP算法: ①单个字符是回文: ②两个连续字符,如果相等则是回文: ③3个以上的字符,两头相等且去掉首尾后依然是回文. 以 s='aba'为例: [0][0] [0][1] [0][2] [1][0] ...

  6. Leetcode刷题指南和top100题目

    原文链接:https://blog.csdn.net/qq_39521554/article/details/79160815 参考博文:https://blog.csdn.net/mmc2015/a ...

  7. 算法工程师实习校招面经 (上篇)

    ​ 公众号 [面经1]算法工程师实习校招面经 (上篇) 知乎 深度学习算法工程师面经(微软.阿里.商汤.滴滴.华为.海康.平安.陌陌等offer)之上篇 - 知乎 ​ 一.引言 "温故而知新 ...

  8. LeetCode github集合,附CMU大神整理笔记

    Github LeetCode集合 本人所有做过的题目都写在一个java项目中,同步到github中了,算是见证自己的进步.github目前同步的题目是2020-09-17日之后写的题.之前写过的题会 ...

  9. Leetcode算法题-解法转载

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/fuxuemingzhu/article/details/85112591 作者: 负雪明烛 i ...

最新文章

  1. mssql 数据库的备份与恢复
  2. python能够做什么软件-python爬虫软件有哪些做的比较好的?
  3. 让电脑死机的java代码_小编为你win7系统Java活动脚本出错导致电脑死机的还原方法...
  4. [数论]拓展中国剩余定理
  5. linux如何判断网线插入_斜口钳和网线钳制作网线!
  6. JSP每隔指定的时间段自动刷新页面
  7. 【重大更新】DevExpress v17.2新版亮点—Bootstrap篇(二)
  8. java集合系列_Java集合系列01-Java集合概述
  9. Intel Skylake (Client) 架构/微架构/流水线 (5) - PAUSE指令时延
  10. 中画图title函数_Matlab对量子力学中的一维无限深势阱的模拟计算
  11. pojo类中list存储其他字段_如何从其他包含pojo类对象的数组列表中删除数组列表记录...
  12. ssm基于Android的自来水收费系统APP(ssm+uinapp+Mysql)
  13. pythonnumpy安装教程_NumPy环境安装配置
  14. 量子通信,到底是什么工作原理?
  15. CSS 渐变背景 之 线性渐变
  16. 2022年中国云计算面临的问题及发展前景预测分析
  17. Android最佳实践之性能 - 电池续航时间优化
  18. 与领导吃饭需要注意什么
  19. 微信小程序的广告方式有哪些
  20. iOS开发者账号过期续费

热门文章

  1. 信息系统项目管理师-项目集、项目组合管理核心知识点思维脑图
  2. DevExpress的进度条控件ProgressBarControl的使用-以ZedGraph添加曲线进度为例
  3. Netty4服务端和客户端实现
  4. 【知识图谱实战】 Neo4j入门与示例
  5. HTML 标签简写及全称
  6. Flutter基础笔记
  7. Linux——进程控制(总结)
  8. 南京工程学院 嵌入式linux 复习
  9. python shell怎么换行_python shell:去除fasta文件的换行符
  10. 神策数据丨九大行业数字化经营指南集锦,值 100% 收藏