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 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)