【Anagrams】 cpp

题目:

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

Note: All inputs will be in lower-case.

代码:

class Solution {
public:
    vector<string> anagrams(vector<string>& strs) {
        vector<string> ret;
        map<string,vector<int> > str_indexs;
        // trans strs to key (sorted string) and value (indexs of strs that have same key) pairs
        for ( size_t i = 0; i < strs.size(); ++i )
        {
            string key = strs[i];
            std::sort(key.begin(), key.end());
            str_indexs[key].push_back(i);
        }
        // add the keys which occurs more than once
        for ( map<string,vector<int> >::iterator it = str_indexs.begin(); it!= str_indexs.end(); ++it )
        {
            if ( it->second.size()>1 )
            {
                for ( size_t k = 0; k < it->second.size(); ++k )
                {
                    ret.push_back(strs[it->second[k]]);
                }
            }
        }
        return ret;
    }
};

tips:

对于std::map的使用还不太熟悉,接着这道题也熟悉一下。

这道题非常经典,直接搜的AC code。学习了一下,把看过的几个blog记录在下面。

http://bangbingsyb.blogspot.sg/2014/11/leetcode-anagrams.html

http://www.cnblogs.com/AnnieKim/archive/2013/04/25/3041982.html

时间: 2024-11-06 12:34:59

【Anagrams】 cpp的相关文章

【Combinations】cpp

题目: Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For example,If n = 4 and k = 2, a solution is: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 代码: class Solution { public: vector<vector<int>> combine

【Triangle 】cpp

题目: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below. For example, given the following triangle [ [2], [3,4], [6,5,7], [4,1,8,3] ] The minimum path sum from top to bottom is 1

【N-Queens】cpp

题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other. Given an integer n, return all distinct solutions to the n-queens puzzle. Each solution contains a distinct board configuration

【Permutations】cpp

题目: Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1]. 代码: class Solution { public: vector<vector<int>> permute(vector&

【Subsets】cpp

题目: Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example,If nums = [1,2,3], a solution is: [ [3], [1], [2], [

【3Sum】cpp

题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c) The s

【4Sum】cpp

题目: Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target. Note: Elements in a quadruplet (a,b,c,d) must be in non-descending or

【转】linux configure报错configure: error: C++ preprocessor “/lib/cpp” fails sanity 的解决办法

/lib/cpp fails sanity check的解决 在某些软件的时候,运行./configure 会报错,错误提示为: configure: error: C++ preprocessor “/lib/cpp” fails sanity  check See `config.log’ for more details 解决办法:出现该情况是由于c++编译器的相关package没有安装,以root用户登陆,在终端上执行: # yum install glibc-headers # yum

【Pascal&#39;s Triangle】cpp

题目: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 代码: class Solution { public: vector<vector<int>> generate(int numRows) { vector<vector