zoukankan      html  css  js  c++  java
  • 680. Valid Palindrome II

    package LeetCode_680
    
    /**
     * 680. Valid Palindrome II
     * https://leetcode.com/problems/delete-operation-for-two-strings/description/
     *
     * Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in each step you can delete one character in either string.
    
    Input: "sea", "eat"
    Output: 2
    Explanation: You need one step to make "sea" to "ea" and another step to make "eat" to "ea".
    
    Note:
    The length of given words won't exceed 500.
    Characters in given words can only be lower-case letters.
     * */
    class Solution {
        //Time complexity:O(n)
        fun validPalindrome(s: String): Boolean {
            //var l = -1
            val n = s.length
            var l = 0
            var r = n-1
            while (l < r && s[l] == s[r]) {
                l++
                r--
            }
            //if left,right char is not equal, either delete one char in left or delete one char in right and check again
            return isPalindrome(s, l + 1, r) || isPalindrome(s, l, r - 1)
        }
    
        private fun isPalindrome(str: String, l_: Int, r_: Int): Boolean {
            var l = l_
            var r = r_
            while (l < r) {
                if (str[l] != str[r]) {
                    return false
                }
                l++
                r--
            }
            return true
        }
    }
  • 相关阅读:
    LWIP的底层结构(物理层)
    Source insight 支持汇编
    Camera Vision
    i2c-tools的使用方法及举例
    浅析C语言中strtol()函数与strtoul()函数的用法
    CF540C Ice Cave
    CF540B School Marks
    hdu5122 K.Bro Sorting
    hdu1013 Digital Roots
    蓝桥杯 算法提高 递推求值
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13277323.html
Copyright © 2011-2022 走看看