L1-032. Left-pad(Java,C)PAT團體程序設計天梯賽-練習集

根據新浪微博上的消息,有一位開發者不滿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;
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章