L1-032 Left-pad (20 分)

根据新浪微博上的消息,有一位开发者不满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

 做起来感觉非常容易的一题,稍微观察了下一些c文章,发现我的做法好像(?)还没有人用过,也因为是题水题,更多在思路不同,所以发了我人生中第一篇文章。

#include <stdio.h>
#include <string.h>
static char ch[100000];//最后一个测试点数据貌似过长,10000的时候说地址溢出
int main()
{
    int N, pd, i = 0;
    char x;
    scanf("%d %c", &N, &x); //读取输出长度N与x填充字符
    getchar();    //接收上一个输入的换行符'\n'
    gets(ch);
    pd = strlen(ch);
    N = pd - N;   //想法:当长度-输出时,对于输出而言,如果更短,则为正;如果更长,则为负
    for (; N < pd; N++)  //长度-输出为下限,ch长度为上限
    {
        if (N < 0)printf("%c", x); //当为负时,则输出x字符
        else printf("%c", ch[N]);  //否则逐个输出字符串,从第长度-输出开始
    }
    return 0;
}

例:例1:输出为15位,输入的字符串为11位,故11-15=-4,N从-4一路加到0,共4个x字符,从0位开始输出ch字符串(ch[0]~ch[10])。

例2:输出为4位,输入为24位,24-4=20,从第21位一路输出到第24位(ch[20~ch[23])

注:本人大一新人,如果有错欢迎指正, 本文为随手,重要在分享思路,或许也有很多人与我有同样的思路,无论以前或者以后,希望大家一起努力!(*^▽^*)

(摸鱼)

上一篇:CF347A Difference Row 题解


下一篇:每日一题2021/11/05