PAT练习集之20分题-L1-032. Left-pad

xiaoxiao2021-02-28  31

L1-032. Left-pad

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

依旧模拟题?错过一发18分先贴再看当时心路历程了:

#include<bits/stdc++.h> #define ms(a,x) memset(a,x,sizeof(a)) using namespace std; typedef long long ll; int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b);} int lcm(int a,int b){ return a/gcd(a,b)*b;} int main(){ int n; char c; char a[10007]; scanf("%d %c",&n,&c); getchar(); gets(a); int len = strlen(a); //cout<<len<<endl; if(len>=n){ for(int i=len-n;i<len;i++){ cout<<a[i]; } } else { for(int i=0;i<n-len;i++){ cout<<c; } for(int i=0;i<len;i++){ cout<<a[i]; } } return 0; }

很明显的错误就是数组开小了,简单的改下数组大小就过了。。。。。。

哈哈哈哈哈哈哈哈哈,尴尬不尴尬,反正我是超级尴尬。

做法,比较字符串有没有给出的值长,如果没有就先补齐,如果有就从len-n开始输出字符。。

就是这么easy

正确题解:

#include<bits/stdc++.h> #define ms(a,x) memset(a,x,sizeof(a)) using namespace std; typedef long long ll; int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b);} int lcm(int a,int b){ return a/gcd(a,b)*b;} int n; char c; char a[10000007]; int main(){ scanf("%d %c",&n,&c); getchar(); gets(a); int len = strlen(a); //cout<<len<<endl; if(len>=n){ for(int i=len-n;i<len;i++){ cout<<a[i]; } } else { for(int i=0;i<n-len;i++){ cout<<c; } for(int i=0;i<len;i++){ cout<<a[i]; } } return 0; }
转载请注明原文地址: https://www.6miu.com/read-2622782.html

最新回复(0)