`

LeetCode 49 - Anagrams

 
阅读更多

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

 

public List<String> anagrams(String[] strs) {
    List<String> result = new ArrayList<>();
    Map<String, List<String>> map = new HashMap<>();
    if(strs == null || strs.length==0) return result;
    for(String str:strs) {
        char[] seq = str.toCharArray();
        Arrays.sort(seq);
        String key = new String(seq);
        if(map.containsKey(key)) {
            map.get(key).add(str);
        } else {
            List<String> list = new ArrayList<>();
            list.add(str);
            map.put(key, list);
        }
    }
    for(List<String> list:map.values()) {
        if(list.size()>1)
            result.addAll(list);
    }
    return result;
}

 

C++版本:

vector<string> anagrams(vector<string>& strs) {
    vector<string> result;
    unordered_map<string, vector<string>> map;
    for(auto& str : strs) {
        string s(str);
        sort(s.begin(), s.end());
        map[s].push_back(str);
    }
    for(auto& p : map) {
        if(p.second.size() > 1) 
            result.insert(result.end(), p.second.begin(), p.second.end());
    }
    return result;
}

 

分享到:
评论

相关推荐

    C语言-leetcode题解之49-group-anagrams.c

    在这里,我们针对LeetCode上的第49题——"Group Anagrams"(分组异位词)进行C语言的解决方案分析。 首先,题目要求将字符串数组中的字符串分组,使得每一组中的字符串都是相互的异位词,即字符串中字母出现的频率...

    js-leetcode题解之49-group-anagrams.js

    在LeetCode这样的编程练习平台上,题目编号为49的"Group Anagrams"问题,是检验开发者字符串处理能力的一个有趣挑战。 异位词是指由相同字母以不同顺序组成的单词,例如"listen"和"silent",尽管这两个单词的字母...

    vscode安装leetcode-leetcode-js-tdd:LeetCode勇士的简单样板

    vscode安装leetcode leetcode-js-tdd leetcode 勇士的简单样板 如何使用 克隆这个 repo 在你的 vscode 中安装 配置扩展以使用 repo ...使用1.two-sum.js案例导出解决方案 ...参见49.group-anagrams.js

    java-leetcode题解之049-Group-Anagrams

    java入门 java_leetcode题解之049_Group_Anagrams

    c语言-leetcode题解之0438-find-all-anagrams-in-a-string

    c c语言_leetcode题解之0438_find_all_anagrams_in_a_string

    lrucacheleetcode-Leetcode-Solutions-CSharp:该存储库将包含C#中许多Leetcode问题的解决方案

    lru缓存leetcode ...Anagrams - Leetcode 40 (Medium) 用交易费买卖股票的最佳时机 - Leetcode 714 (Medium) 保持城市天际线的最大增加 - Leetcode 807(中) 有效括号 - Leetcode 20 (Easy) 重新格式化日期

    lrucacheleetcode-leetcode-practice:Leetcode-练习

    Anagrams-排序,Hashmap Medium 合并 K 个排序列表 - 优先队列困难 最小路径和中等 二叉树右侧视图(DFS和BFS)中 岛屿数量 - BFS、联合和查找媒介 子集 - 位操作介质 K 最近点到原点 - 堆 有效的二叉搜索树中 BST:...

    vscode提交leetcode-leetcode:最后...leetcode练习

    vscode提交leetcode 我的leetcode练习笔记 结构 代码在根路径中,每个cpp文件都是一个问题的解决方案 有关特定问题的解决方案的一些说明在目录中。 我使用的工具 我使用扩展来测试和调试本地并提交我确定我的解决...

    leetcode分类-leetcode:leetcode

    Anagrams in a String Pattern: two points 双指针是这样的模式:两个指针朝着左右方向移动(双指针分为同向双指针和异向双指针),直到他们有一个或是两个都满足某种条件。 使用双指针的优势:若只用一个指针,需多...

    leetcode双人赛-leetcode-1:leetcode-1

    Anagrams :简单的#hashtable问题。 BalancedBinaryTree :简单的#balance #tree问题。 BestTimetoBuyandSellStock :简单的问题。 BestTimetoBuyandSellStockII :简单的问题。 BestTimetoBuyandSellStockIII : ...

    dna匹配leetcode-leetcode:leetcode刷题

    Anagrams 排序 unordered_map Minimum Window Substring 两个指针遍历 map Maximal Rectangle 栈 局部递增 或者 动态规划 Binary Tree Inorder Traversal 栈 递归 Single Number 异或 Copy List with Random Pointer...

    leetcode中国-leetcode:leetcode刷题

    leetcode中国 我自己的leetcode刷题记录 ###[20150920] Valid Palindrome Implement strStr() ...Anagrams 字符串处理,map Simplify Path,字符串处理,stack Length of Last Word,字符串处理.细节题 Rever

    _leetcode-python.pdf

    - Group Anagrams: 组合所有字母异位词,即将字母顺序不同但字母组合相同的单词分组。 - Pow(X, n): 实现x的n次幂运算,需要考虑各种边界情况和性能优化。 - N-Queens / N-Queens II: 第一个问题是经典的N皇后问题,...

    算法-leetcode-剑指offer上的题很多

    - **两个字符串是否互为变位词(Anagrams)**: 判断两个字符串是否包含相同数量的相同字符。 - **最长公共子串(Longest Common Substring)**: 在两个字符串中找到长度最长的相同子串。 - **字符串旋转(Rotate String)*...

    leetcode438-LeetCode438_Find_All_Anagrams_in_String:438题目:给定一个字符串s和一个非空

    LeetCode438_Find_All_Anagrams_in_String 438题目:给定一个字符串s和一个非空字符串p,字符串全部由小写字母子组成。 在S中找出所有p对应的anagrams(颠倒)字符串的子串,返回这些子串的起始索引 如s="cbaebabacd...

    java-leetcode题解之Group Anagrams.java

    本篇文章聚焦于Java语言解决LeetCode上的"Group Anagrams"题目。此题要求将字符串数组中的字符串分组,使得同组中的字符串彼此是字母异位词(anagrams)。字母异位词是指由相同字母以不同顺序排列组成的词。 Java...

    leetcode中国-quiz:每周小测

    leetcode中国 每周小测 每周题目 week 1 adjust : 将数组中指定索引处的值替换为经函数变换的值 实现版本: ramda版本参考: groupAnagrams : 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但...

    leetcode2-code_interview:LeetCodeLintCode题解,剑指offer题目,互联网公司面试,BAT外企等面试题

    anagrams 两个乱序字符串的比较 lint55 compare-string和group string都是同型题目 int79-LCS lintcode上的79题 寻找最长公共字串 lintcode 138-Subarray-Sum integer-arr 整型数组 值得回顾的题 41-first-missing-...

Global site tag (gtag.js) - Google Analytics