zoukankan      html  css  js  c++  java
  • leetcode 647. 回文子串 JAVA

    题目:

    给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。

    具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。

    示例 1:

    输入: "abc"
    输出: 3
    解释: 三个回文子串: "a", "b", "c".
    示例 2:

    输入: "aaa"
    输出: 6
    说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa".
    注意:

    输入的字符串长度不会超过1000。

    解题:

    class Solution {
        public int countSubstrings(String s) {
            int Allnum = 0;
            for (int i = 0; i < s.length(); i++) {
                /*计算字符串中以第i个字符为中心的回文子串个数*/
                /*计算字符串中以第i个字符为左中心的回文子串个数*/
                Allnum = Allnum + numberOfPalindrome(s, i, i);
                Allnum = Allnum + numberOfPalindrome(s, i, i + 1);
            }
            return Allnum;
        }
    
        private int numberOfPalindrome(String s, int left, int right) {
            int count = 0;
            while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
                left--;
                right++;
                count++;
            }
            return count;
        }
    }
  • 相关阅读:
    I'm Telling the Truth
    B-shaass and lights codeForces
    1
    不容易系列之(4)——考新郎 HDU
    犯人冲突
    不互质的和
    OI回忆录
    NOI2018退役记
    uoj221【NOI2016】循环之美
    uoj220【NOI2016】网格
  • 原文地址:https://www.cnblogs.com/yanhowever/p/11550967.html
Copyright © 2011-2022 走看看