[Swift Weekly Contest 126]LeetCode1003. 检查替换后的词是否有
We are given that the string? From any valid string? If for example? Return? 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: 输入:"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? 提示:
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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |