资讯专栏INFORMATION COLUMN

249. Group Shifted String

JerryZou / 1066人阅读

摘要:题目解答在为负数的时候,当经过的时候,数值大小会很大得反转

题目:
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"],
A solution is:

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

解答:

public List> groupStrings(String[] strings) {
        List> result = new ArrayList>();
        Map> map = new HashMap>();
        
        for (String str : strings) {
            String key = "";
            for (int i = 1; i < str.length(); i++) {
                int offset = str.charAt(i) - str.charAt(i - 1);
                //在为负数的时候,当经过z, a的时候,数值大小会很大得反转
                key += offset < 0 ? offset + 26 : offset;
            }
            if (!map.containsKey(key)) map.put(key, new ArrayList());
            map.get(key).add(str);
        }
        
        for (List list : map.values()) {
            result.add(list);
        }
        return result;
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64875.html

相关文章

  • 49. Group Anagrams and 249. Group Shifted Strings

    摘要:也就是同构异形体。特点是有相同数量的组成。素数可以素数表。这里使用而不是可以避免最后从导出结果的时间。修改了和得到的方法,其他都一样。但是会有解不了的地方。还有个特殊情况就是不是一组。如果数字编码出来都是如果用编码,出现的就是。 49 Group Anagrams Given an array of strings, group anagrams together. For examp...

    cppowboy 评论0 收藏0
  • 16 道 JavaScript 基础算法 - freeCodeCamp

    #1. Reverse a String Reverse the provided string. You may need to turn the string into an array before you can reverse it. Your result must be a string. function reverseString(str/*:string*/) { if ...

    yintaolaowanzi 评论0 收藏0
  • 【译】12个提高 JavaScript 技能的概念!

    摘要:如果是你是高级或者初级开发人员,了解它的基本概念非常重要。由于是基本类型,因此的值等于的值,并且可以认为此时与完全不同。展开运算符可用于提取数组的各个元素。函数本身返回从数组中删除的项。如果未指定结束位置,则返回数组的其余部分。 译者:前端小智 原文:hackernoon.com/12-javascri… JavaScript 是一种复杂的语言。如果是你是高级或者初级 JavaScript...

    Eidesen 评论0 收藏0
  • js数组常用的一些方法

    摘要:如果被引用的对象发生改变,则改变将反应到新的和原来的数组中对于字符串和数字来说不是和对象,会拷贝字符串和数字到新的数组里。在一个数组里修改这些字符串或数字,不会影响另一个数组。 (1) arr.length => 返回一个数组中的元素个数(数组属性) var numbers = [1,2,3,4,5]; numbers.length; // 5 (2) arr.indexOf(sear...

    wendux 评论0 收藏0
  • 利用MongoDB分析Nginx日志

    摘要:通过通过入库后使用进行查询的方式可以通过如下种图片来查看在上图中主要是查看日志中请求状态码的总数量。 原文地址: http://52sox.com/use-mongodb-... 在项目开发过程中,总是离不开日志解析的工作,虽然有些时候觉得确实挺繁琐的,但是静下心来会发现有时候也是挺有趣的1件工作。 在这里,我们要从日志文件中找出IP访问最多的10条记录,然后判断其是否合法,从而采取...

    edgardeng 评论0 收藏0

发表评论

0条评论

JerryZou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<