加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[Swift Weekly Contest 126]LeetCode1003. 检查替换后的词是否有

发布时间:2020-12-14 05:03:24 所属栏目:百科 来源:网络整理
导读: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

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‘

给定有效字符串?"abc"

对于任何有效的字符串?V,我们可以将?V?分成两个部分?X?和?Y,使得?X + YX?与?Y?连接)等于?V。(X?或?Y?可以为空。)那么,X + "abc" + Y?也同样是有效的。

例如,如果?S = "abc",则有效字符串的示例是:"abc""aabcbc""abcabc""abcabcababcc"。无效字符串的示例是:"abccba""ab""cababc""bac"

如果给定字符串?S?有效,则返回?true;否则,返回?false。?

示例 1:

输入:"aabcbc"
输出:true
解释:
从有效字符串 "abc" 开始。
然后我们可以在 "a" 和 "bc" 之间插入另一个 "abc",产生 "a" + "abc" + "bc",即 "aabcbc"。

示例 2:

输入:"abcabcababcc"
输出:true
解释:
"abcabcabc" 是有效的,它可以视作在原串后连续插入 "abc"。
然后我们可以在最后一个字母之前插入 "abc",产生 "abcabcab" + "abc" + "c",即 "abcabcababcc"。

示例 3:

输入:"abccba"
输出:false

示例 4:

输入:"cababc"
输出:false?

提示:

  1. 1 <= S.length <= 20000
  2. S[i]?为?‘a‘‘b‘、或?‘c‘

Runtime:?100 ms
Memory Usage:?20.6 MB
 1 class Solution {
 2     func isValid(_ S: String) -> Bool {
 3         var n:Int = S.count
 4         var arr:[Character] = Array(S)
 5         var h:[Int] = [Int](repeating:0,count:3)
 6         for i in 0..<n
 7         {
 8             h[arr[i].ascii - 97] += 1
 9         }
10         if !S.contains("abc")
11         {
12             return false
13         }
14         if h[0] != h[1] || h[1] != h[2]
15         {
16             return false
17         }
18         var cc:[Int] = [Int](repeating:0,count:3)
19         for i in 0..<n
20         {
21             cc[arr[i].ascii - 97] += 1
22             if cc[0] < cc[1] || cc[1] < cc[2]
23             {
24                 return false
25             }
26         }
27         return true
28     }
29 }
30 
31 //Character扩展 
32 extension Character  
33 {  
34   //转ASCII整数值(定义小写为整数值)
35    var ascii: Int {
36        get {
37            return Int(self.unicodeScalars.first!.value)
38        }       
39     }    
40 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读