zoukankan      html  css  js  c++  java
  • 647. Palindromic Substrings

    package LeetCode_647
    
    /**
     * 647. Palindromic Substrings
     * https://leetcode.com/problems/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".
    
    Note:
    1. The input string length won't exceed 1000.
     * */
    class Solution {
        /*
        * solution: check the palindrome of odd length palindromic substring and even length palindromic substring,
        * for example: aabaa, checking:
         loop 1. center on a and aa, scan to left and right,
         2. center on a and ab, scan to left and right,
         3. center on b and ba, scan to left and right,
    
        * Time complexity:O(n^2), Space complexity:O(1)
        * */
    
        private var count = 0
    
        fun countSubstrings(s: String): Int {
            if (s == null || s.isEmpty()) {
                return 0
            }
            for (i in s.indices) {
                //check odd length
                checkPalindrome(s, i, i)
                //check even length
                checkPalindrome(s, i, i + 1)
            }
            return count
        }
    
        private fun checkPalindrome(string: String, i_: Int, j_: Int) {
            var i = i_
            var j = j_
            while (i >= 0 && j < string.length && string[i] == string[j]) {
                //if substring is palindrome
                count++
                //to trace string in left direction
                i--
                //to trace string in right direction
                j++
            }
        }
    }
  • 相关阅读:
    C#中的WebBrowser控件的使用
    触发器
    SQL Server存储机制
    mongodb客户端操作常用命令
    动态居中方法
    关于node不需要重启即可刷新页面
    测试一个段落里面是否含有数字
    表单验证
    关于echarts和jquery的结合使用问题
    js函数获取ev对象
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13939406.html
Copyright © 2011-2022 走看看