• 408. Valid Word Abbreviation


    package LeetCode_408
    
    /**
     * 408. Valid Word Abbreviation
     * (Prime)
     * Given a non-empty string s and an abbreviation abbr, return whether the string matches with the given abbreviation.
    A string such as "word" contains only the following valid abbreviations:
    ["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d", "wo2", "1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"]
    Notice that only the above abbreviations are valid abbreviations of the string "word".
    Any other string is not a valid abbreviation of "word".
    Note:
    Assume s contains only lowercase letters and abbr contains only lowercase letters and digits.
    
    Example 1:
    Given s = "internationalization", abbr = "i12iz4n":
    Return true.
    
    Example 2:
    Given s = "apple", abbr = "a2e":
    Return false.
     * */
    class Solution {
        /*
        * solution: Sliding-Window, Time complexity:O(n), Space complexity:O(1)
        * */
        fun isValidAbberviation(s: String?, abbr: String?): Boolean {
            if (s == null || abbr == null) {
                return false
            }
            if (s.length == abbr.length && s != abbr) {
                return false
            }
            //calculate the total length than compare both
            val charArray = abbr.toCharArray()
            val length = charArray.size
            var count = 0
            var right = 0
            var i = 0
            while (i < length) {
                if (charArray[i].isDigit()) {
                    right = i
                    while (charArray[right].isDigit()) {
                        right++
                        if (right >= length) {
                            break
                        }
                    }
                    val countString = abbr.substring(i, right)
                    count += countString.toInt()
                    //update the index
                    i = right - 1
                } else {
                    count++
                }
                i++
            }
            return count == s.length
        }
    }
  • 相关阅读:
    游记&退役记
    Nothing to say
    学习知识点的比较好的blog
    计划做题列表
    后缀自动机小专题
    复数
    FFT学习
    P2900 [USACO08MAR]土地征用Land Acquisition
    # 数位DP入坑
    Hdu 4035 Maze(概率DP)
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13507180.html
Copyright © 2020-2023  润新知