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
        }
    }
  • 相关阅读:
    Python的浅拷贝与深拷贝
    Python:正则表达式的一些例子
    Python的垃圾回收机制
    http和https的区别与联系
    python数据结构之动态数组
    Python:fromkeys()方法
    Python:zip()函数
    算法概念
    Python面向对象:获取对象信息
    Dubbo Configuration
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13277323.html
Copyright © 2011-2022 走看看