3.13—字符串—Anagrams

来源:互联网 发布:matlab对数据归一化 编辑:程序博客网 时间:2024/06/07 00:24
描述
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.

#include <iostream>#include<string>#include<vector>using namespace std;bool IsEqual(string str1, string str2){if (str1.size() != str2.size())return false;const int n = 26;vector<int> temphash(26, 0);for (int i = 0; i<str1.size(); i++){int temp = str1[i] - 'a';temphash[temp]++;}for (int i = 0; i<str2.size(); i++){int temp = str2[i] - 'a';temphash[temp]--;}bool flag = false;for (int i = 0; i<n; i++){if (temphash[i] != 0)return flag;}flag = true;return flag;}vector<vector<string>> Anagrams(vector<string> str){vector<vector<string>> res;int length = str.size();vector<bool> flag(length, false);for (int i = 0; i<length; i++){if (!flag[i]){flag[i] = true;vector<string> temp;temp.push_back(str[i]);for (int j = i + 1; j<length; j++){if (!flag[j] && IsEqual(str[i], str[j])){temp.push_back(str[j]);flag[j] = true;}}res.push_back(temp);}}return res;}int main(){vector<string> str;str.push_back("dirtyroom");str.push_back("tydirroom");str.push_back("eat");str.push_back("ate");str.push_back("seu");vector<vector<string>> res;res = Anagrams(str);for (int i = 0; i<res.size(); i++){for (int j = 0; j<res[i].size(); j++){cout << res[i][j] << endl;}cout << endl;}}

原创粉丝点击