バックル9. Fizz Buzzの問題
https://www.lintcode.com/problem/fizz-buzz/description
整数nを指定します 。1 から n まで、次の規則に従って各数値を出力します。
- 数値が3で割り切れる場合、printします
fizz
。 - 数値が5で割り切れる場合は、それを印刷し
buzz
ます。 - この数は、同時にできれば
3
と5
分割印刷fizz buzz
。 - 数値が
3
割り切れない場合も割り切れない場合 も5
、数値を出力します本身。
アイデア:分類の場合
#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および文字列変換
1つは、to_string関数
C ++ 11標準は、グローバル関数std :: to_stringを追加します。
string to_string(int val);
文字列to_string(長い値);
文字列to_string(長い長い値);
文字列to_string(符号なしval);
文字列to_string(符号なしlong val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
文字列to_string(長い二重val);
第二に、文字列ストリームの助けを借りて
標準ライブラリでは、istringstream、ostringstream、stringstreamの3つのタイプの文字列ストリームが定義されています。名前を見ると、これらのタイプはiostreamのタイプとよく似ていることがわかります。文字列タイプの読み取り、書き込み、読み取りと書き込みが可能です。 iostreamタイプから派生。それらを使用するには、sstreamヘッダーファイルをインクルードする必要があります。
iostreamから継承された操作に加えて
1. sstream型は、文字列パラメーターを持つコンストラクターを定義します。つまり、stringstream stream(s); sのコピーを格納するstringstreamオブジェクトを作成します。sは文字列型オブジェクトです
2. strという名前のメンバーを定義して、stringstreamオブジェクトによって操作される文字列値を読み取るか設定します:stream.str(); streamに格納されている文字列型オブジェクトstream.str(s)を返します。ストリームにコピーしてvoidを返す
int aa = 30;
string s1;
stringstream ss;
ss<<aa;
ss>>s1;
cout<<s1<<endl; // 30