647. Palindromic Substrings
题目描述:
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相关推荐
- 【动态规划 回文串13】LeetCode 647. Palindromic Substrings
LeetCode 647. Palindromic Substrings Solution1:我的答案 动态规划,易解 class Solution { public:int countSubstri ...
- LeetCode 647. Palindromic Substrings
Given a string, your task is to count how many palindromic substrings in this string. The substrings ...
- 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 ...
- 647. Palindromic Substrings 回文子串
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串. 示例 1: 输入:"abc" 输出: ...
- 31/100. Palindromic Substrings
DP算法: ①单个字符是回文: ②两个连续字符,如果相等则是回文: ③3个以上的字符,两头相等且去掉首尾后依然是回文. 以 s='aba'为例: [0][0] [0][1] [0][2] [1][0] ...
- Leetcode刷题指南和top100题目
原文链接:https://blog.csdn.net/qq_39521554/article/details/79160815 参考博文:https://blog.csdn.net/mmc2015/a ...
- 算法工程师实习校招面经 (上篇)
公众号 [面经1]算法工程师实习校招面经 (上篇) 知乎 深度学习算法工程师面经(微软.阿里.商汤.滴滴.华为.海康.平安.陌陌等offer)之上篇 - 知乎 一.引言 "温故而知新 ...
- LeetCode github集合,附CMU大神整理笔记
Github LeetCode集合 本人所有做过的题目都写在一个java项目中,同步到github中了,算是见证自己的进步.github目前同步的题目是2020-09-17日之后写的题.之前写过的题会 ...
- Leetcode算法题-解法转载
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuxuemingzhu/article/details/85112591 作者: 负雪明烛 i ...
最新文章
- mssql 数据库的备份与恢复
- python能够做什么软件-python爬虫软件有哪些做的比较好的?
- 让电脑死机的java代码_小编为你win7系统Java活动脚本出错导致电脑死机的还原方法...
- [数论]拓展中国剩余定理
- linux如何判断网线插入_斜口钳和网线钳制作网线!
- JSP每隔指定的时间段自动刷新页面
- 【重大更新】DevExpress v17.2新版亮点—Bootstrap篇(二)
- java集合系列_Java集合系列01-Java集合概述
- Intel Skylake (Client) 架构/微架构/流水线 (5) - PAUSE指令时延
- 中画图title函数_Matlab对量子力学中的一维无限深势阱的模拟计算
- pojo类中list存储其他字段_如何从其他包含pojo类对象的数组列表中删除数组列表记录...
- ssm基于Android的自来水收费系统APP(ssm+uinapp+Mysql)
- pythonnumpy安装教程_NumPy环境安装配置
- 量子通信,到底是什么工作原理?
- CSS 渐变背景 之 线性渐变
- 2022年中国云计算面临的问题及发展前景预测分析
- Android最佳实践之性能 - 电池续航时间优化
- 与领导吃饭需要注意什么
- 微信小程序的广告方式有哪些
- iOS开发者账号过期续费