题目来源:
点击打开链接
题目描述:
Write a program that outputs the string representation of numbers from 1 to n.
But for multiples of three it should output “Fizz” instead of the number and for the multiples of five output “Buzz”. For numbers which are multiples of both three and five output “FizzBuzz”.
Example:
n = 15, Return: [ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz" ]
我的解决方案:
class Solution { public: vector<string> fizzBuzz(int n) { vector<string> ret; for(int i=1;i<=n;++i) { if(i%3==0) { if(i%5==0) ret.push_back("FizzBuzz"); else ret.push_back("Fizz"); } else if(i%5==0) ret.push_back("Buzz"); else { stringstream ss; string s; ss<<i; ss>>s; ret.push_back(s); } } return ret; } };
思考: 这道题目本身很简单,没啥好说的,比较有意思的一点就是整型转换为string.因为string的构造函数是不支持直接从int转换为string的,最开始的时候尝试过定义一个临时的char变量,然后强行等于这个整型,再转换成string发现还是不行(其实可以用char数组,然后sprint的方式来转换),最后google了一下,选择了stringstream的流的方式来进行转换,确实很方便.从字符串转换为整型就比较方便了,atoi函数就可以