文章目錄
- L1-032 Left-pad
- 題目描述
- 代碼
L1-032 Left-pad
題目描述
根據新浪微博上的消息,有一位開發者不滿NPM(Node Package Manager)的做法,收回了自己的開源代碼,其中包括一個叫left-pad的模塊,就是這個模塊把javascript里面的React/Babel干癱瘓了。這是個什么樣的模塊?就是在字符串前填充一些東西到一定的長度。例如用 * 去填充字符串GPLT,使之長度為10,調用left-pad的結果就應該是******GPLT。Node社區曾經對left-pad緊急發布了一個替代,被嚴重吐槽。下面就請你來實現一下這個模塊。
輸入格式:
輸入在第一行給出一個正整數N(≤104 )和一個字符,分別是填充結果字符串的長度和用于填充的字符,中間以1個空格分開。第二行給出原始的非空字符串,以回車結束。
輸出格式:
在一行中輸出結果字符串。
輸入樣例1:
15 _
I love GPLT
輸出樣例1:
____I love GPLT
輸入樣例2:
4 *
this is a sample for cut
輸出樣例2:
cut
代碼
#include<bits/stdc++.h> // 引入幾乎所有的常用庫,一般在競賽編程中使用
using namespace std;int main()
{int n; // 定義一個整數變量n,表示最終字符串的長度string a; // 定義一個字符串變量a,存儲用于填充的字符cin >> n >> a; // 從標準輸入讀取長度n和填充字符acin.ignore(); // 忽略掉前面讀取整數后的換行符,以免影響后續的字符串讀取string b; // 定義字符串b,用來存儲原始字符串getline(cin, b); // 從標準輸入讀取原始字符串if(n > b.size()) // 如果指定的長度n大于原始字符串b的長度{int t = n - b.size(); // 計算需要填充的字符數while(t--) // 循環填充字符{b.insert(0, a); // 在字符串b的開頭插入填充字符a,直到其長度達到n}}else // 如果指定的長度n小于或等于原始字符串b的長度{int t = b.size() - n; // 計算原始字符串b中需要裁剪掉的字符數量b = b.substr(t, n); // 從字符串b中裁剪出新的長度為n的字符串}cout << b; // 輸出最終得到的字符串return 0; // 程序結束
}
此代碼的主要邏輯是:
- 首先讀取需要的最終長度 n 和填充用的字符 a。
- 忽略一個換行符,然后讀取原始字符串 b。
- 如果原始字符串的長度小于指定的長度 n,計算差值,然后在原始字符串的前面填充足夠數量的指定字符 a。
- 如果原始字符串的長度大于等于指定的長度 n,則截取原始字符串的最后 n 個字符,使其長度匹配指定的長度。
- 最終輸出得到的字符串,不論是填充還是截取操作。