您的位置:首页 > 其它

华为机试——字符串拆分

2016-01-12 16:01 197 查看
按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。

例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”

#include<iostream>
#include<stdio.h>
#include<string>
#include<vector>
using namespace std;
/*
int main()
{
int m,n;
vector<string> vs;
cin>>m>>n;
string s;
for(int i=0;i<m;i++)
{
cin>>s;
vs.push_back(s);
}
vector<string>::iterator it;
for(it=vs.begin();it!=vs.end();++it)
{
string tmp=*it;
int len=tmp.size();
int k=len/n;
string::iterator si;
for(int i=0;i<k;i++)
{
if(len<n)
{
tmp=tmp+string(n-len,'0');
cout<<tmp<<endl;
}
else
{
string str(tmp,i*n,n);
cout<<str<<" ";
}
}
string str2(tmp,k*n,len-k*n);
str2+=string((k+1)*n-len,'0');
cout<<str2<<endl;
}
}
*/
//方法2
void solve(char *str,int n,int len)
{
int i,j,k;
for(i=0;i<len;i+=n)
{
if(len-i<n) //所划分的单元内符号个数小于n
{
k=n+i-len;  //需要补零个数
for(j=i;j<len;j++)
printf("%c",str[j]);
for(j=0;j<k;j++)
putchar('0');
//printf("%c",'0');
}
else
{
for(j=i;j<i+n;j++)
printf("%c",str[j]);
}
putchar(' ');
}
printf("\n");
}
int main()
{
int i,m,n,len;
//char str[100];
char str[10][100];
cin>>m>>n;
/*for(i=0;i<m;i++)
{
scanf("%s",str);
len=strlen(str);
solve(str,n,len);
}
*/
for(i=0;i<m;i++)
scanf("%s",str[i]);
for(i=0;i<m;i++)
{
len=strlen(str[i]);
solve(str[i],n,len);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: