根據新浪微博上的消息,有一位開發者不滿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
首先java代碼,在PAT平臺未超時,全對;在PTA平臺有時超時
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
char c = scanner.next().charAt(0);
// 讀取回車
scanner.nextLine();
// 獲取字符數組
char[] str = scanner.nextLine().toCharArray();
int i = 0, len = str.length;
// 當字符串長度大於0,就繼續後面操作
while (len > 0) {
// 如果給定值大於長度
if (N > len) {
// 打印填充字符
System.out.print(c);
// 給定值減一
N--;
} else {
// 如果給定值小於字符串長度
// 則只輸出給定長度的字符串
// 直到len和N一樣大時,纔開始輸出字符
if (len <= N) {
System.out.print(str[i]);
N--;
}
// 如果 len 大於N,則索引一直往後移
i++;
len--;
}
} // while (len > 0)
} // main
}
C 代碼,都未超時,全對
#include <stdio.h>
#include <string.h>
int main()
{
int N;
char c;
scanf("%d %c ", &N, &c);
char str[100000];
gets(str);
int i = 0;
int len = strlen(str); // 獲取字符串長度
// 當字符串長度大於0,就繼續後面操作
while (len) {
// 如果給定值大於長度
if (N > len) {
// 打印填充字符
printf("%c", c);
// 給定值減一
N--;
} else {
// 如果給定值小於字符串長度
// 則只輸出給定長度的字符串
// 直到len和N一樣大時,纔開始輸出字符
if (len <= N) {
printf("%c", str[i]);
N--;
}
// 如果 len 大於N,則索引一直往後移
i++;
len--;
}
} // while (len > 0)
return 0;
}