给出两个字符串,你需要找到缺少的字符串
样例
给一个字符串 str1 = This is an example
, 给出另一个字符串 str2 = is example
返回 ["This", "an"]
解题思路:
先将两字符串分别切割为一个一个单词放入数组中,然后将str2单词再放入哈希表中方便查找,最后遍历str1中的单词,如果在哈希表中没找到则放进res中。
注意题目中查找缺少的字符串是按种类而不是按数目的,所以只用set就行,如果是按数目找缺少的字符串则需要用map,将每个单词的频次也存储起来。
class Solution {
public:
/**
* @param str1: a given string
* @param str2: another given string
* @return: An array of missing string
*/
vector<string> missingString(string &str1, string &str2)
{
// Write your code here
vector<string> v1 = splitStr(str1);
vector<string> v2 = splitStr(str2);
unordered_set<string> m2;//将str2中的单词放进哈希表中
for(auto s : v2)
m2.insert(s);
vector<string> res;
for(auto s : v1)
{
if(m2.count(s)==0)
res.push_back(s);
}
return res;
}
//将字符串分割为一个一个单词
vector<string> splitStr(const string & str)
{
vector<string> res;
int i=0 , j=0; //[i,j)为每一个单词
int len = str.size();
while(j<=len)
{
if(str[j] == ' ' || str[j] == '\0')
{
string s(str.begin()+i , str.begin()+j);
res.push_back(s);
i = j+1;
j = i;
}
else
j++;
}
return res;
}