質問リンク:L1-032 左パッド
トピックの要件:
新浪微博のニュースによると、開発者は NPM (ノード パッケージ マネージャー) の実践に不満を抱き、JavaScript をReact/Babel は終わりました。これはどのようなモジュールですか?文字列の前に何かを一定の長さまで詰めるだけです。たとえば、 *
を使用して文字列 GPLT
を埋め込み、長さが 10 になるようにします。 left-pad を呼び出した結果は ******GPLT
。 Node コミュニティはかつて、左パッドの代替品を緊急リリースしましたが、これは厳しく批判されました。次に、このモジュールを実装してもらいます。
入力形式:
入力の最初の行には正の整数が指定されますN
(≤104) と、パディング結果の文字列の長さとパディングに使用される文字を 1 つ含む 1 文字が指定されます。真ん中はスペースで区切られています。 2 行目は元の空ではない文字列を示し、復帰で終了します。
出力フォーマット:
結果の文字列を 1 行に出力します。
入力例1:
15 _
I love GPLT
出力サンプル 1:
____I love GPLT
入力例2:
4 *
this is a sample for cut
出力サンプル 2:
cut
アイデア:
1. まず、n の数字、文字、文字列を入力します。
2. 判定 n の値が文字列の長さに満たない場合は、文字列の下から n 桁を取り出します。
3. n の値が文字列の長さより大きい場合は、最初に n - 文字列の長さを出力し、次に文字列を出力します。
注: (1) 1 行目に文字列を入力し、2 行目に文字列を入力した後、改行文字を吸収するために getchar() を途中に追加します。
コード:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
char c;
string s;
cin >> n >> c;
getchar();
getline(cin,s);
if(n < s.size())
{
for(int i = s.size() - n; i <= s.size(); i ++)
{
cout << s[i];
}
}
else
{
int t = n - s.size();
for(int j = 0; j < t; j ++)
{
cout << c;
}
for(int i = 0; i <= s.size(); i ++)
{
cout << s[i];
}
}
cout << endl;
return 0;
}