Think:
是下午模拟赛的题目,感觉坑挺多的, 先判断长度,然后根据字符串长度来判断是 增加字符还是 删减字符。随后输出。
题目:
根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用*去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是******GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。
输入格式:
输入在第一行给出一个正整数N(≤104\le 10^4≤104)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。
输出格式:
在一行中输出结果字符串。
输入样例1:
15 _
I love GPLT
输出样例1:
____I love GPLT
输入样例2:
4 *
this is a sample for cut
输出样例2:
cut
PS:各个测试点
测试点1 答案正确 8/8 2 1 sample 1 等价
测试点2 答案正确 4/4 2 1 sample 2 等价
测试点3 答案正确 2/2 1 1 正好不用补
测试点4 答案正确 2/2 1 1 最大N, 只补1个, 字符是%
测试点5 答案正确 2/2 1 1 最大N, 最短字符串
测试点6 答案正确 2/2 2 1 最大N, 长度超过N的字符串
#include<stdio.h>
#include<string.h>
int main()
{
char c;
char str[105000] = {0};
char Newstr[105000] = {0};
int cnt;
int temp;
int n, i = 0;
scanf("%d",&n);
getchar();
c = getchar();
getchar();
gets(str);
int d = strlen(str);
cnt = d;
temp = d;
if (d > n)
{
while(cnt > n)
{
i ++;
cnt = cnt - 1;
}
cnt = 0;
for (;i <= d - 1;i ++)
{
Newstr[cnt ++] = str[i];
}
puts(Newstr);
}
cnt = 0;
if (d < n)
{
while(temp < n)
{
Newstr[cnt ++] = c;
temp ++;
}
for (i = 0;i <= d - 1;i ++)
{
Newstr[cnt ++] = str[i];
}
puts(Newstr);
}
if (d == n)
puts(str);
return 0;
}