leetcode 字元串
38.外觀數列
class Solution {
public:
string countAndSay(int n) {
string s = "1";//初始化第一個序列
for(int i=1;i<n;i++)//循環n次
{
string ns = ""; //儲存臨時結果
for(int j=0;j<s.size();)
{
int u = j;
while(u < s.size()&&s[u]==s[j])u++;
ns += to_string(u-j);
ns += s[j];
j=u;
}
s =ns;
}
return s;
}
};
49 字母異位詞
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string,vector<string>>hash;
for(auto str:strs)
{
string key=str;
sort(key.begin(),key.end());
hash[key].push_back(str);
}
vector<vector<string>> res;
for(auto item:hash) res.push_back(item.second);
return res;
}
};
151 reverse words in a string
class Solution {
public:
string reverseWords(string s) {
int k=0;
for(int i=0;i<s.size();i++)
{
while(i<s.size()&&s[i]==' ')i++;
if(i==s.size()) break;
int j=i;
while(j<s.size()&&s[j] !=' ')j++;
reverse(s.begin()+i,s.begin()+j);
if(k)s[k++]=' ';
while(i<j)s[k++]=s[i++];
}
s.erase(s.begin()+k,s.end());
reverse(s.begin(),s.end());
return s;
}
};