列表

详情


MGJ10. 输出指定长度子串

描述

给定一个字符串,输出所有指定长度为n的子串,没有则输出-1

输入描述

输入第一行一个字符串,如:“1234567890”

输入第二行一个数字是n,如5

输出描述

输出所有长度为n的子串,如“12345”,“23456”,“34567”,“45678”,“56789”

示例1

输入:

123456789
5

输出:

12345 23456 34567 45678 56789

原站题解

C++14 解法, 执行用时: 1ms, 内存消耗: 364KB, 提交时间: 2020-07-28

#include<stdio.h>
#include<string.h>
int main(){
    char s[100000];
    int len,i,j,n;
    scanf("%s",s);
    scanf("%d",&n);
    len = strlen(s);
    if(len<n||n<=0){
        printf("-1");
    }
    else{
        for(i=0;i<=len-n;i++){
            for(j=0;j<n;j++){
                printf("%c",s[i+j]);
            }
            printf(" ");
        }
    }
    return 0;
}

C++14 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-05-20

#include<stdio.h>
#include<string.h>
int main(){
    char s[100000];
    int len,i,j,n;
    scanf("%s",s);
    scanf("%d",&n);
    len = strlen(s);
    if(len<n||n<=0){
        printf("-1");
    }
    else{
        for(i=0;i<=len-n;i++){
            for(j=0;j<n;j++){
                printf("%c",s[i+j]);
            }
            printf(" ");
        }
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2021-08-20

#include<stdio.h>
#include<string.h>
int main()
{
    char a[1000];
    while (scanf("%s",a)!=EOF)
    {
        int n,i,j;
        scanf("%d",&n);
        if(n>strlen(a)||n<=0)
        {
            printf("-1\n");
            return 0;
        }
        for(i=0;i<strlen(a);i++)
        {
            if(i+n<=strlen(a))
            {
                for(j=i;j<i+n;j++)
                {
                    printf("%c",a[j]);
                }
                printf(" ");
            }
        }
        printf("\n");
    }
    return 0;
}

C++14 解法, 执行用时: 2ms, 内存消耗: 340KB, 提交时间: 2020-05-18

#include<stdio.h>
#include<string.h>
int main(){
    char s[100000];
    int len,i,j,n;
    scanf("%s",s);
    scanf("%d",&n);
    len = strlen(s);
    if(len<n||n<=0){
        printf("-1");
    }
    else{
        for(i=0;i<=len-n;i++){
            for(j=0;j<n;j++){
                printf("%c",s[i+j]);
            }
            printf(" ");
        }
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-04-23

#include<stdio.h>
#include<string.h>
int main(){
    char s[100000];
    int len,i,j,n;
    scanf("%s",s);
    scanf("%d",&n);
    len = strlen(s);
    if(len<n||n<=0){
        printf("-1");
    }
    else{
        for(i=0;i<=len-n;i++){
            for(j=0;j<n;j++){
                printf("%c",s[i+j]);
            }
            printf(" ");
        }
    }
    return 0;
}

上一题