根据新浪微博上的消息,有一位开发者不满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])
注:本人大一新人,如果有错欢迎指正, 本文为随手,重要在分享思路,或许也有很多人与我有同样的思路,无论以前或者以后,希望大家一起努力!(*^▽^*)
(摸鱼)