zoukankan      html  css  js  c++  java
  • 【leetcode】1003. Check If Word Is Valid After Substitutions

    题目如下:

    We are given that the string "abc" is valid.

    From any valid string V, we may split V into two pieces X and Y such that X + Y (X concatenated with Y) is equal to V.  (X or Y may be empty.)  Then, X + "abc" + Y is also valid.

    If for example S = "abc", then examples of valid strings are: "abc", "aabcbc", "abcabc", "abcabcababcc".  Examples of invalid strings are: "abccba""ab""cababc""bac".

    Return true if and only if the given string S is valid.

    Example 1:

    Input: "aabcbc"
    Output: true
    Explanation: 
    We start with the valid string "abc".
    Then we can insert another "abc" between "a" and "bc", resulting in "a" + "abc" + "bc" which is "aabcbc".
    

    Example 2:

    Input: "abcabcababcc"
    Output: true
    Explanation: 
    "abcabcabc" is valid after consecutive insertings of "abc".
    Then we can insert "abc" before the last letter, resulting in "abcabcab" + "abc" + "c" which is "abcabcababcc".
    

    Example 3:

    Input: "abccba"
    Output: false
    

    Example 4:

    Input: "cababc"
    Output: false

    Note:

    1. 1 <= S.length <= 20000
    2. S[i] is 'a''b', or 'c'

    解题思路:这个题目有点用巧的意思了,可以逆向思维。每次从input中删除掉一个"abc",如果最后input能变成空就是True,否则就是False。

    代码如下:

    class Solution(object):
        def isValid(self, S):
            """
            :type S: str
            :rtype: bool
            """
            while len(S) > 0:
                inx =  S.find('abc')
                if inx == -1:
                    return False
                S = S[:inx] + S[inx+3:]
            return True
  • 相关阅读:
    02-30 线性可分支持向量机
    02-28 scikit-learn库之线朴素贝叶斯
    02-27 朴素贝叶斯
    02-26 决策树(鸢尾花分类)
    047 选项模式
    第二节:师傅延伸的一些方法(复习_总结)
    第一节:登录流程
    第一节:对应拼音编码查询(后续更新)
    前端对象
    Form表单
  • 原文地址:https://www.cnblogs.com/seyjs/p/10469214.html
Copyright © 2011-2022 走看看