バックル9.フィズバズ問題(分類の場合)

バックル9. Fizz Buzzの問題

https://www.lintcode.com/problem/fizz-buzz/description

整数nを指定します  。1  から  n  まで、次の規則に従って各数値を出力します。

  • 数値が3で割り切れる場合、printしますfizz
  • 数値が5で割り切れる場合は、それを印刷しbuzzます。
  • この数は、同時にできれば35分割印刷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

 

元の記事を23件公開 賞賛された0 訪問数137

おすすめ

転載: blog.csdn.net/qq_35683407/article/details/105400106