zoukankan      html  css  js  c++  java
  • 249. Group Shifted Strings

    package LeetCode_249
    
    /**
     * 249. Group Shifted Strings
     * (Prime)
     * 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.
    
    Example:
    Input: ["abc", "bcd", "acef", "xyz", "az", "ba", "a", "z"],
    Output:
    [
    ["abc","bcd","xyz"],
    ["az","ba"],
    ["acef"],
    ["a","z"]
    ]
     * */
    class Solution {
        /*
        * solution: HashMap, save list of string with same key
        * n: size fo array
        * l: length of string
        * Time complexity:O(n*l), Space complexity:O(n)
        * */
        fun groupStrings(strings: Array<String>): List<List<String>> {
            val result = ArrayList<ArrayList<String>>()
            //key: the string that each letter has same ascii offset
            //value: ArrayList, contains string with same key
            val map = HashMap<String, ArrayList<String>>()
            for (string in strings) {
                //use first char for the offset
                var key = ""
                val offset = string[0] - 'a'
                for (c in string) {
                    var char = c - offset
                    //if char not a letter, need add 26,let change to letter
                    //for example: ` to z
                    if (char < 'a') {
                        char += 26
                    }
                    key += char
                }
                if (!map.contains(key)) {
                    map.put(key, ArrayList())
                }
                map.get(key)!!.add(string)
            }
            for (item in map) {
                result.add(item.value)
            }
            return result
        }
    }
  • 相关阅读:
    NativeXml (1):下载、安装、测试
    NativeXml (7):添加属性
    NativeXml (9):读取
    NativeXml (2):对象建立
    NativeXml (3):保存
    NativeXml (6):添加节点
    NativeXml (10):编辑
    NativeXml (5):事件
    博客园现代化建设—用 Entity Framework 与 Json.NET 实现数据的按需更新
    Entity Framework 小知识分享
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13915171.html
Copyright © 2011-2022 走看看