日々の練習 2023.12.6——左パッド【PTA】

質問リンク: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;
}

テストケース:

おすすめ

転載: blog.csdn.net/m0_63168877/article/details/134831478