博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Group Shifted Strings
阅读量:5230 次
发布时间:2019-06-14

本文共 1624 字,大约阅读时间需要 5 分钟。

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.

题解:

既然是group,那么我们需要有一个规则,把符合规则的放在一起。那么,规则是什么呢?

根据题目的意思,对于两串字符串,如果字符串的相邻字符的差值是一致的,那么我们就可以把它们放在一起。

但是对于az, ba这样的,字符之间的差值不一样啊。但是为何它们是一组的呢?

az字符之间的差值是25,ba之间字符的差值是-1,但是字符是每隔26就一循环,所以,对于-1,你一旦加上26就是25.

1 public class Solution { 2     public List
> groupStrings(String[] strings) { 3 List
> result = new ArrayList
>(); 4 HashMap
> map = new HashMap
>(); 5 for (int i = 0; i < strings.length; i++) { 6 StringBuffer sb = new StringBuffer(); 7 for (int j = 0; j < strings[i].length(); j++) { 8 sb.append(Integer.toString(((strings[i].charAt(j) - strings[i].charAt(0)) + 26) % 26)); 9 sb.append(" ");10 }11 String shift = sb.toString();12 13 if (map.containsKey(shift)) {14 map.get(shift).add(strings[i]);15 } else {16 List
list = new ArrayList
();17 list.add(strings[i]);18 map.put(shift, list);19 }20 }21 22 for (String s : map.keySet()) {23 Collections.sort(map.get(s));24 result.add(map.get(s));25 }26 return result;27 }28 }

 

转载于:https://www.cnblogs.com/beiyeqingteng/p/5717873.html

你可能感兴趣的文章
我是插件狂人,jDuang,jValidator,jModal,jGallery
查看>>
张季跃 201771010139《面向对象程序设计(java)》第四周学习总结
查看>>
如何解除循环引用
查看>>
android中fragment的使用及与activity之间的通信
查看>>
字典【Tire 模板】
查看>>
jquery的contains方法
查看>>
python3--算法基础:二分查找/折半查找
查看>>
Perl IO:随机读写文件
查看>>
Perl IO:IO重定向
查看>>
转:基于用户投票的排名算法系列
查看>>
WSDL 详解
查看>>
[转]ASP数组全集,多维数组和一维数组
查看>>
C# winform DataGridView 常见属性
查看>>
逻辑运算和while循环.
查看>>
Nhiberate (一)
查看>>
c#后台计算2个日期之间的天数差
查看>>
安卓开发中遇到的小问题
查看>>
ARTS打卡第3周
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>