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++
            }
        }
    }
  • 相关阅读:
    centos崩溃后如何修复
    乘法是啥
    接上篇—用spring注入DBbean,并使用maven管理
    技术产生价值
    技术?
    世界的本质是啥呢
    java-web 登陆功能
    对java的理解
    数学的历史
    使用jmeter测试接口
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13939406.html
Copyright © 2011-2022 走看看