力扣9. Fizz Buzz 问题
https://www.lintcode.com/problem/fizz-buzz/description
给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:
- 如果这个数被3整除,打印
fizz
. - 如果这个数被5整除,打印
buzz
. - 如果这个数能同时被
3
和5
整除,打印fizz buzz
. - 如果这个数既不能被
3
整除也不能被5
整除,打印数字本身。
思路:if分类
#include "stdafx.h"
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
/**
* @param n: An integer
* @return: A list of strings.
*/
vector<string> fizzBuzz(int n)
{
// write your code here
vector<string>result;
for (int i = 1; i <= n; i++)
{
if (i%15==0)
{
result.push_back("fizz buzz");
}
else if (i % 3 == 0)
{
result.push_back("fizz");
}
else if (i % 5 == 0)
{
result.push_back("buzz");
}
else
{
result.push_back(to_string(i));
}
}
return result;
}
};
int main()
{
Solution s;
auto result = s.fizzBuzz(15);
return 0;
}
int与字符串string转化
一、to_string函数
c++11标准增加了全局函数std::to_string:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
二、借助字符串流
标准库定义了三种类型字符串流:istringstream,ostringstream,stringstream,看名字就知道这几种类型和iostream中的几个非常类似,分别可以读、写以及读和写string类型,它们也确实是从iostream类型派生而来的。要使用它们需要包含sstream头文件。
除了从iostream继承来的操作
1.sstream类型定义了一个有string形参的构造函数,即: stringstream stream(s); 创建了存储s副本的stringstream对象,s为string类型对象
2.定义了名为str的成员,用来读取或设置stringstream对象所操纵的string值:stream.str(); 返回stream中存储的string类型对象stream.str(s); 将string类型的s复制给stream,返回void
int aa = 30;
string s1;
stringstream ss;
ss<<aa;
ss>>s1;
cout<<s1<<endl; // 30