zoukankan      html  css  js  c++  java
  • [Swift]LeetCode249.群组偏移字符串 $ Group Shifted Strings

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

    Given a string, we can "shift" each of its letter to its successive letter, for example: "abc" -> "bcd". We can keep "shifting" which forms the sequence:

    "abc" -> "bcd" -> ... -> "xyz"

    Given a list of strings which contains only lowercase alphabets, group all strings that belong to the same shifting sequence.

    For example, given: ["abc", "bcd", "acef", "xyz", "az", "ba", "a", "z"]
    Return:

    [
      ["abc","bcd","xyz"],
      ["az","ba"],
      ["acef"],
      ["a","z"]
    ]

    Note: For the return value, each inner list's elements must follow the lexicographic order.


    给定一个字符串,我们可以将它的每个字母“移位”到它的连续字母,例如:“abc”->“bcd”。我们可以保持“移动”,这形成了一个序列:

    "abc" -> "bcd" -> ... -> "xyz"

    给定只包含小写字母的字符串列表,将属于同一移位序列的所有字符串分组。

    例如,给定:["abc", "bcd", "acef", "xyz", "az", "ba", "a", "z"]

    返回:

    [
      ["abc","bcd","xyz"],
      ["az","ba"],
      ["acef"],
      ["a","z"]
    ]

    注意:对于返回值,每个内部列表的元素必须遵循字典顺序。


     1 class Solution {
     2     func groupStrings(_ strings:[String]) -> [[String]] {
     3         var res:[[String]] = [[String]]()
     4         var m:[String:Set<String>] = [String:Set<String>]()
     5         for a in strings
     6         {
     7             var t:String = ""
     8             for c in a.characters
     9             {
    10                 t += String((c.ascii + 26 - a[0].ascii) % 26) + ","
    11             }
    12             if m[t] == nil
    13             {
    14               m[t] = Set<String>()
    15             }
    16              m[t]!.insert(a) 
    17         }
    18         for it in m.values
    19         {
    20             res.append(Array(it))
    21         }
    22         return res
    23     }
    24 }
    25 
    26 extension Character  
    27 {  
    28   //属性:ASCII整数值(定义小写为整数值)
    29    var ascii: Int {
    30         get {
    31             let s = String(self).unicodeScalars
    32             return Int(s[s.startIndex].value)
    33         }
    34     }
    35 }
    36 
    37 extension String {        
    38     //subscript函数可以检索数组中的值
    39     //直接按照索引方式截取指定索引的字符
    40     subscript (_ i: Int) -> Character {
    41         //读取字符
    42         get {return self[index(startIndex, offsetBy: i)]}
    43     }
    44 }
  • 相关阅读:
    数据结构前言
    Linux---远程连接、命令行基础、文件及目录管理
    HTTP协议
    Docker---dockerfile
    Docker---指令
    Docker---介绍
    进程模块的使用
    numpy---(精简)
    OpenJudge/Poj 2105 IP Address
    OpenJudge 2786 Pell数列
  • 原文地址:https://www.cnblogs.com/strengthen/p/10214827.html
Copyright © 2011-2022 走看看