PTA 6が裏返し(STL string.replace)

L1-058 6回転(15ポイント)

666.JPG

「666」はインターネット用語です。これはおそらく誰かが素晴らしい人であり、私たちがそれを賞賛していることを意味します。最近、別の数値「9」が導出されました。これは、「6がひっくり返った」という意味で、非常に強力です。これが最高レベルの偉大さだと思うなら、あなたは間違っています。現在の最高レベルは3の「9」なので、数値「27」です。

この質問は、一連の「6666……6」のみを使用して、賞賛を最新の高度な表現に表現する古い文を翻訳するプログラムを作成するように求めています。

入力フォーマット:

入力では、1行に1文、つまり、1000文字以下の英字、数字、スペースで構成され、改行で終了する空でない文字列を指定します。

出力フォーマット:

入力文を左から右にスキャンします。文に3つ以上の連続する6がある場合は、6つの連続する6を9に置き換えます。9つ以上の連続する6がある場合は、6つの連続する6を27。その他の内容は影響を受けず、そのまま出力されます。

入力サンプル:

それは本当に666なので、他に何が言えるでしょうか6666666666

出力例: 

それは本当に666本当に9他に何が言えるか27

コード: 

#include <bits/stdc++.h>
using namespace std;
int main()
{
	string str;
	getline(cin, str);
	for (int i = 0; i<str.length(); i++){
		if (str[i] == '6'){
			int j = 1;
			for (; i + j<str.length() && str[i + j] == '6'; j++);
			if (j>9)str.replace(i, j, "27");//i为开始位置,j为替换长度
			else if (j>3)str.replace(i, j, "9");
		}
	}
	cout << str << endl;
	return 0;
}

 

おすすめ

転載: blog.csdn.net/qq_43700916/article/details/88925974