首页 > 试题广场 >

按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,

[问答题]
按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
#include <iostream>
#include <string>

using namespace std;

int main()
{
	int M, N,times,len;
	string s;	
	while (cin >> M >> N)
	{
		while (M--)
		{
			s = "";
			cin >> s;
			len = s.size();	

			if (len % N == 0)
				times = len / N;
			else
				times = len / N + 1;

			s.resize(N*times, '0');

			for (int i = 0; i < times; i++)
				cout << s.substr(i*N,N) << endl;
		}
	}

	return 0;
}

发表于 2015-08-19 02:54:59 回复(0)
#include <stdio.h>
#include <string.h>
void Print(char a[],int n){	//补零法 打印 
	char b[100];
	int len = n - strlen(a);
	for(int i=0;i<len;i++){
		b[i]='0';
	}
	strcat(a,b);	//在后面补 0 
	printf("%s\n",a);
}

int main(){
	int i,m,n,len;	//m:为输入字符串个数 n:为输入每串字符串的位数 
	char a[100];
	scanf("%d %d",&m,&n); 
	for(int j=0;j<m;j++){
		scanf("%s",a);	
		if(strlen(a) < n){	//字符串a的长度小于 n时,Print()打印 
			Print(a,n);
		}else{
			while(strlen(a) > n){	//把前 n个打印输出 
				for(i=0;i<n;i++){
					printf("%c",a[i]);
				}
				printf("\0");
				printf("\n");
				for(i=n;i<=strlen(a);i++){	//将后面的前移 n个位置,然后再判断字符串 a 的长度与 n 的关系 
					a[i-n] = a[i];
				}
			}
			if(strlen(a) < n){
				Print(a,n);
			}
		}
	}
	return 0;
} 

/*
输入:2 8 
	  abc 123456789 
输出:abc00000
	  12345678
	  90000000 
*/

编辑于 2017-02-24 21:29:25 回复(0)

import java.util.Scanner;

/*
 * 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每
	串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出
	为“abc00000”,“12345678“,”90000000”
    解题思路:按照digit取,当溢出的时候,利用StringBuilder添加0;
 */
public class SplitString {
	public void split(int digit, String str) {
		int time = str.length() / digit;
		
		for (int i = 0; i < time+1; i++) {
			StringBuilder result = new StringBuilder();
			int start = 8*i;
			int end = 8*(i+1);
			if (end > str.length()) {
				end =  str.length();
				result = result.append(str.substring(start, end));
				for (int j = 0; j < 8*(i+1) - str.length(); j++) {
					result = result.append("0");
				}
			}else {
				result =  result.append(str.substring(start, end));
			}
			
			System.out.println(result);
		}
	}
    public static void main(String args[])
    {
    	SplitString s = new SplitString();
        Scanner cin = new Scanner(System.in);
        int num= 0;
        int digit = 0;
        
        num = cin.nextInt();
        digit = cin.nextInt();
        String[] str = new String[num];
        for (int i = 0; i < num; i++){
        	str[i] = cin.next();
        }
        for (int i = 0; i < num; i++){
        	s.split(digit, str[i]);
        }
    }
}


发表于 2015-08-16 16:44:10 回复(1)
def solution(m,n,input):
    output=[]
    for i in range(m):
        output.extend(splitstr(n, input[i]))
    return output
    
def splitstr(n, str):
    output=[]
    if str.__len__()<=n:
        while str.__len__()<n:
            str+='0'
        output.extend([str])
    elif str.__len__()>0:
            output.extend(splitstr(n, str[:n]))
            output.extend(splitstr(n, str[n:]))
    return output

发表于 2020-03-10 23:13:12 回复(0)
 #include<iostream>
#include<string>
using namespace std;
void solve(string str1,int n)
{
    int l = str1.length();
    int v =n-l;
    if (n <= l)
    {
        for (int i = 0; i < n; i++)
            cout << str1[i];
    }
    cout << endl;
    if(n>l)
    {
        for (int i = 0; i < l; i++)
        {
            cout << str1[i];
        }
        for (int j = 1; j <=v; j++)
        {
            cout << '0';
        }
        cout << endl;
    }
}
int main()
{
    int M, N;
    while (cin>>M>>N)
    {
        for (int i=0;i<M;i++)
        {
            string str2;
            cin >> str2;
            solve(str2, N);
        }
    }
    return 0;
}
发表于 2019-08-05 22:17:38 回复(0)
package cn.com.ecnu;

import java.util.Scanner;

public class Solution {
    

    public static void main(String[] args) {
        int M,N;
        Scanner input = new Scanner(System.in);
        M = input.nextInt();
        N = input.nextInt();
        String[] strings = new String[M];
        for(int i = 0;i< M ;i ++)
        {
            strings[i] = input.next();
        }
        int  i = 0;
        while(i < strings.length)
        {
            String temp = strings[i];
            int length = temp.length();
            if(length <= N)
            {
                for(int j = 0; j < N - length;j++)
                {    
                    temp += '0';
                }
                System.out.println(temp);
                temp = "";
                i++;
            }
            else
            {
              System.out.println(temp.substring(0, N));
              strings[i] = temp.substring(N);    
            }
                
        }
    }

}

发表于 2018-08-07 11:24:20 回复(0)
import java.util.Scanner;
/**
 * 输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。
 * 例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000” 
 * @author swx
 *
 */
public class SplitString {
	public static void solution(String str, int n)
	{
		int len = str.length(); //the length of str
		int quotient = len / n; //num of can be splited
		int remainder = len % n; // remainder
		if(quotient > 0)
		{
			for(int i = 1; i <= quotient; i++)
			{
				System.out.println(str.substring(n*(i - 1), n*i));
			}
		}
		String str2 = str.substring(len - remainder);
		while(str2.length() < n)
			str2 += "0";
		System.out.println(str2);
	}
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		while(sc.hasNext())
		{
			int m = sc.nextInt(); //字符串数量
			int n =sc.nextInt();  //要求截断的长度
			System.out.println("字符串数量: "+ m +" 截断的长度 : "+n);
			for(int i = 0;i < m; i++)
			{
				String str = sc.next(); //读入
				solution(str,n);
			}
		}
	}

}
编辑于 2016-08-27 09:51:27 回复(0)
#include<iostream>
using namespace std;
void main()
{
string s1,s2;
int n1,n2,n3;

cout<<"input n1,n2:"<<endl;
cin >>n1>>n2;
string *s=new string[n1];
     n3=n1*n2;
string *out=new string[n3];
cout<<"input"<<n1<<"ge string"<<endl;
int k=0;
for (int i=0;i<n1;i++)
{
cin>>s1;
int n=s1.length();
if (n<=n2)
{
int a=n2-n1;
string buchong(a, '0');
out[k]=s1+buchong;
k++;
}
else
{
int yu=n%n2;
int m=n/n2;
string tmp;
for (int j=0;j<m;j++)
{
tmp=s1.substr(0,n2);
s1=s1.erase(0,n2);
out[k]=tmp;
k++;
tmp="";
n=n-n2;
}
if (yu>0)
{
string buchong(n2-yu, '0');
out[k]=s1+buchong;
k++;
}

}

}
for (int i=0;i<n3;i++)
{
cout<<out[i]<<endl;
}

system("pause");

}

发表于 2016-03-10 21:58:45 回复(0)
package OJ;

import java.util.*;

public class Bully {

/*
  * */

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String[] s = str.split(",");
int m = Integer.parseInt(s[0]);
int n = Integer.parseInt(s[1]);
ArrayList<String> al = new ArrayList<String>();
while(m>0){
str = sc.nextLine();
al.add(str);

m--;
}
Iterator<String> it = al.iterator();
while(it.hasNext())
fun(n,it.next());
    }


private static void fun(int n, String str) {
if(str.length()<=n)
print(str,n);
else{
String temp = str.substring(0, n);
print(temp,n);
str = str.substring(n);
fun(n,str);
}
}


private static void print(String str,int n) {
char[] re = new char[n];
for(int i=0;i<n;i++)
re[i] = '0';
char[] chs = str.toCharArray();
for(int i=0,j=0;j<chs.length;i++,j++){
re[i] = chs[j];
}
sop(new String(re));
}


public static void sop(Object o){
System.out.println(o);
}

}

发表于 2015-09-04 16:54:08 回复(0)
#include<iostream>  
#include<cstdio>  
using namespace std; 
void solve(char *str , int n , int len)  
{  
    int i , j , k , quotient , remainder;  
    quotient = len / n;                //原字符串被分解的个数  
    remainder = len - n * quotient;    //剩余的字符串的个数 
    for(i = 0 ; i < len ; i += n)  
    {  
        if(len - i < n)  
        {  
             k = n - len + i;  
             for(j = i ; j < len ; ++j)  
                 printf("%c" , str[j]);  
             for(j = 0 ; j < k ; ++j)  
                 putchar('0');  
        }  
        else  
        {  
            for(j = i ; j < i + n ; ++j)  
                printf("%c" , str[j]);  
        }  
        putchar(' ');  
    }  
    printf("\n");  
} 
int main(void)  
{  
    int i , m , n , len;  
    char str[1000]; 
    while(scanf("%d %d", &m , &n) != EOF)  
    {  
        for(i = 0 ; i < m ; ++i)  
        {  
            scanf("%s" , str);  
            len = strlen(str);  
            solve(str , n , len);  
        }  
    }  
    return 0;  
}  
发表于 2014-11-14 17:07:53 回复(0)