zoukankan      html  css  js  c++  java
  • 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
        }
    }
  • 相关阅读:
    转载【工具】目前几种常见的线上接口文档管理平台的比较
    最好的Julia语言
    称霸Kaggle的十大深度学习技巧
    AI以假乱真怎么办?TequilaGAN教你轻松辨真伪
    2018 CISCN reverse
    2018 CISCN Writeup
    加壳&脱壳
    脱upx壳--初试--单步追踪
    Linux
    hackme.inndy.tw
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13507180.html
Copyright © 2011-2022 走看看