Description
Given number n. Print number from 1 to n. But:
- when number is divided by
3
, print"fizz"
.- when number is divided by
5
, print"buzz"
.- when number is divided by both
3
and5
, print"fizz buzz"
.Example
If n =
15
, you should return:
[ "1", "2", "fizz", "4", "buzz", "fizz", "7", "8", "fizz", "buzz", "11", "fizz", "13", "14", "fizz buzz" ]
题目模板
class Solution { public: /** * @param n: An integer * @return: A list of strings. */ vector<string> fizzBuzz(int n) { // write your code here } };
题目大意
题目很简单,在1到n的数字中,能被3和5整除输出”fizz buzz”,能被3整除输出”fizz”,能被5整除输出”buzz”。那么难点在于怎么只用一个if实现。下面先给出正常的代码,再给出一个if版。
大体思路
正常版
class Solution { public: /** * @param n: An integer * @return: A list of strings. */ vector<string> fizzBuzz(int n) { // write your code here vector<string> v; for(int i=1; i<=n; i++){ if((i%3==0) && (i%5==0)) v.push_back("fizz buzz"); else if(i % 3 == 0) v.push_back("fizz"); else if(i % 5 == 0) v.push_back("buzz"); else v.push_back(to_string(i)); } return v; } };
一个if版
先说下大体思路,就是先把数字全部填进去,然后再对3的倍数进行修改,最后对5的倍数进行修改的时候判断下是否也是3的倍数就可以了。
class Solution { public: /** * @param n: An integer * @return: A list of strings. */ vector<string> fizzBuzz(int n) { // write your code here vector<string> v; for(int i=1; i<=n; i++) v.push_back(to_string(i)); for(int i=1; (3*i)<=n; i++) v[3*i-1] = "fizz"; for(int i=1; (5*i)<=n; i++){ if((5*i)%3 == 0) v[5*i-1] += " buzz"; else v[5*i-1] = "buzz"; } return v; } };