码迷,mamicode.com
首页 > 其他好文 > 详细

[LC] 647. Palindromic Substrings

时间:2020-03-29 10:56:42      阅读:23      评论:0      收藏:0      [点我收藏+]

标签:vat   task   start   value   art   count   new   tput   for while   

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".

 

Solution 1

class Solution {
    public int countSubstrings(String s) {
        int len = s.length();
        int res = 0;
        boolean [][] isPalin = new boolean[len][len];
        for (int i = 0; i < len; i++) {
            for (int j = 0; j <= i; j++) {
                if (s.charAt(i) == s.charAt(j) && (i <= j + 2 || isPalin[i - 1][j + 1])) {
                    isPalin[i][j] = true;
                    res += 1;
                }
            }
        }
        return res;
    }
}

 

Solution 2

class Solution {
    public int countSubstrings(String s) {
        int len = s.length();
        int[] count = new int[1];
        for (int i = 0; i < len; i++) {
            getPalin(s, i, i, count);
            getPalin(s, i, i + 1, count);
        }
        return count[0];
    }
    
    private void getPalin(String s, int left, int right, int[] count) {
        // need to ensure left, right value for while
        while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
            count[0] += 1;
            left -= 1;
            right += 1;
        }
    } 
}

 

[LC] 647. Palindromic Substrings

标签:vat   task   start   value   art   count   new   tput   for while   

原文地址:https://www.cnblogs.com/xuanlu/p/12591012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!