思路挺简单的,就是去重+存字母
这个完完全全是自己写的,不会的也是东查西查。
这里我学会了:
- 迭代器的使用
- 将一个vector里的值赋给另一个vector
- int 转 string
http://c.biancheng.net/view/338.html
https://www.cnblogs.com/lifexy/p/8642163.html
https://leetcode-cn.com/problems/fizz-buzz/
class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> v;
vector<string> Ans;
map<string, bool> mark;
//string b;
//std::string b;
//std::stringstream ss;
for(int i = 1; i <= n; ++i){
if(i % 3 == 0 && i % 5 == 0) v.push_back("FizzBuzz");
else if(i % 3 == 0) v.push_back("Fizz");
else if(i % 5 == 0) v.push_back("Buzz");
// else {String b = Integer.toString(i);; v.push_back(b); b.clear();}
else {string b = to_string(i); v.push_back(b); b.clear();}
}
int cnt = 0;
vector<int >::iterator it;
for(auto it = v.begin(); it != v.end(); ++it){
string a = v[cnt];
++cnt;
if(it - 1 != v.end() && it == it + 1) {if(!mark[a]) Ans.push_back(*it); mark[*it] = true;}
else {Ans.push_back(*it); mark["Fizz"] = false, mark["Buzz"] = false, mark["FizzBuzz"] = false;}
}
return Ans;
}
};
麻了,string可以直接+,然后统一用emplace_back() 放入vector。
-
string可以直接+``
-
emplace_back()
实现了直接从list中一步到位构造对象,省略了创建临时对象的过程,从而减少了创建的时间
string.curr;
answer.emplace_back(curr);