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:
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”],
A solution is:
解法1: HashMap
基本的思路是要构造一个hash function,使得属于一个sequence的字符串可以group到一起。一个思路是把每一个字符转换成对于与第一个字符的位置。
这里要处理的是负数的情况,比如ba
,az
,这里用到的trick是用(diff + 26) % 26 来转换成正整数。
同时要注意的是需要分隔开不同的数字,因为对于012不能区分是0-12还是0-1-2.