LintCode 9. Fizz Buzz 问题
问题描述
给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:
如果这个数被3整除,打印fizz.
如果这个数被5整除,打印buzz.
如果这个数能同时被3和5整除,打印fizz buzz.
您在真实的面试中是否遇到过这个题? Yes
样例
比如 n = 15, 返回一个字符串数组:
[
“1”, “2”, “fizz”,
“4”, “buzz”, “fizz”,
“7”, “8”, “fizz”,
“buzz”, “11”, “fizz”,
“13”, “14”, “fizz buzz”
]
问题分析
简单的if else语句,需要注意将整形的数值装换为字符串类型。
代码
class Solution {
public:
/*
* @param n: An integer
* @return: A list of strings.
*/
vector<string> fizzBuzz(int n) {
// write your code here
vector<string> str;
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 && i % 5 == 0) {
str.push_back("fizz buzz");
} else if (i % 3 == 0) {
str.push_back("fizz");
} else if (i % 5 == 0) {
str.push_back("buzz");
} else {
std::stringstream newstr;
newstr << i;
str.push_back(newstr.str());
}
}
return str;
}
};
代码思路
三种情况逐一判断,要先判断既能被三整除又能被5整除的判断条件,将整形的数值装换为字符串类型。