zoukankan      html  css  js  c++  java
  • [Swift]LeetCode1100. 长度为 K 的无重复字符子串 | Find K-Length Substrings With No Repeated Characters

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/11075293.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given a string S, return the number of substrings of length K with no repeated characters.

    Example 1:

    Input: S = "havefunonleetcode", K = 5
    Output: 6
    Explanation: 
    There are 6 substrings they are : 'havef','avefu','vefun','efuno','etcod','tcode'.
    

    Example 2:

    Input: S = "home", K = 5
    Output: 0
    Explanation: 
    Notice K can be larger than the length of S. In this case is not possible to find any substring.

    Note:

    1. 1 <= S.length <= 10^4
    2. All characters of S are lowercase English letters.
    3. 1 <= K <= 10^4

    给你一个字符串 S,找出所有长度为 K 且不含重复字符的子串,请你返回全部满足要求的子串的 数目。 

    示例 1:

    输入:S = "havefunonleetcode", K = 5
    输出:6
    解释:
    这里有 6 个满足题意的子串,分别是:'havef','avefu','vefun','efuno','etcod','tcode'。
    

    示例 2:

    输入:S = "home", K = 5
    输出:0
    解释:
    注意:K 可能会大于 S 的长度。在这种情况下,就无法找到任何长度为 K 的子串。 

    提示:

    1. 1 <= S.length <= 10^4
    2. S 中的所有字符均为小写英文字母
    3. 1 <= K <= 10^4

    44ms

     1 class Solution {
     2     func numKLenSubstrNoRepeats(_ S: String, _ K: Int) -> Int {
     3         var ans:Int = 0
     4         let n:Int = S.count
     5         let S:[Int] = Array(S).map{$0.ascii}
     6         for i in 0..<n
     7         {
     8             var freq:[Int] = [Int](repeating:0,count:26)
     9             var j:Int = i
    10             var len:Int = 0
    11             while(j < n)
    12             {
    13                 //a:97
    14                 if freq[S[j] - 97] != 0 {break}
    15                 freq[S[j] - 97] += 1
    16                 len += 1
    17                 j += 1
    18                 if len == K
    19                 {
    20                     ans += 1
    21                 }
    22             }
    23         }
    24         return ans
    25     }
    26 }
    27 
    28 //Character扩展
    29 extension Character
    30 {
    31     //Character转ASCII整数值(定义小写为整数值)
    32     var ascii: Int {
    33         get {
    34             return Int(self.unicodeScalars.first?.value ?? 0)
    35         }
    36     }
    37 }
  • 相关阅读:
    反射+javacsv+scv文件构建资源获取
    数据库连接池学习
    标准web架构分层
    Luogu P1850换教室【期望dp】By cellur925
    bzoj1179: [Apio2009]Atm 【缩点+spfa最长路】
    Luogu P3946 ことりのおやつ(小鸟的点心) 【最短路】By cellur925
    Luogu P3393 逃离僵尸岛【最短路】By cellur925
    Luogu P4933 大师【dp】By cellur925
    莫队初探(不带修/例题极少)By cellur925
    分层图初探 By cellur925
  • 原文地址:https://www.cnblogs.com/strengthen/p/11075293.html
Copyright © 2011-2022 走看看