leetcode 412.Fizz Buzz
题目描述
写一个程序,输出从 1 到 n 数字的字符串表示。
- 如果 n 是3的倍数,输出“Fizz”;
- 如果 n 是5的倍数,输出“Buzz”;
- 如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:
n = 15,
返回:
[
“1”,
“2”,
“Fizz”,
“4”,
“Buzz”,
“Fizz”,
“7”,
“8”,
“Fizz”,
“Buzz”,
“11”,
“Fizz”,
“13”,
“14”,
“FizzBuzz”
]
解题思路
这是一个很简单的题,判断是不是3和5的公倍数,然后依次判断是不是3的倍数,5的倍数
class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> res;
if (n<=0){
return res;
}
for(int i=1; i<=n; i++){
if((i%3==0) && (i%5==0)){
res.push_back("FizzBuzz");
continue;
}
if(i%3 == 0){
res.push_back("Fizz");
}
else if(i%5 == 0){
res.push_back("Buzz");
}
else{
res.push_back(to_string(i));
}
}
return res;
}
};
题目扩展: 现在题目扩展一下,增加一个条件 “如果n是7的倍数输出“Xxx”, 如果同时是3和7的倍数输出“FizzXxx”, 如果同时是5和7的倍数输出“BuzzXxx”,如果同时是3、5和7的倍数输出“FizzBuzzXxx” ”。
这是如果采用上面的方法就变得很繁琐,可以采用字符串拼接的方法解题
class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> res;
if (n<=0){
return res;
}
for (int i=1; i<=n; i++){
string temp = "";
if(i%3 == 0){
temp += "Fizz";
}
if(i%5 == 0){
temp += "Buzz";
}
if(temp.empty()){
temp += to_string(i);
}
res.push_back(temp);
}
return res;
}
};
欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步