当前位置: 首页 > 工具软件 > PAD > 使用案例 >

Left-pad

靳举
2023-12-01

Think:
是下午模拟赛的题目,感觉坑挺多的, 先判断长度,然后根据字符串长度来判断是 增加字符还是 删减字符。随后输出。

题目:
根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用*去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是******GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。
输入格式:

输入在第一行给出一个正整数N(≤104\le 10^4≤10​4​​)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以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;
 }

 类似资料: