首页 > 试题广场 >

输出指定长度子串

[编程题]输出指定长度子串
  • 热度指数:5920 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个字符串,输出所有指定长度为n的子串,没有则输出-1

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

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


输出描述:
输出所有长度为n的子串,如“12345”,“23456”,“34567”,“45678”,“56789”
示例1

输入

123456789
5

输出

12345 23456 34567 45678 56789
#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;
    int n;
    while(cin>>s){
        int l = s.length();
        cin>>n;
        if(n>l || n<1)
            cout<<-1<<endl;
        else{
            for(int i=0;i<=l-n;i++){
                if(i==l-n)
                    cout<<s.substr(i,n)<<endl;
                else
                    cout<<s.substr(i,n)<<" ";
            }
        }
    }
    return 0;
}

发表于 2019-07-16 01:28:31 回复(0)
更多回答
s = str(input())
n = input()
if n > len(s): print -1

elif n < 0 :
        print -1

else :
    i = 0
    while i + n <= len(s) :
        print s[i : i + n],
        i += 1
        pass
发表于 2019-07-20 07:56:10 回复(0)
有点小坑,注意要做下边界判断,n可能为负 或者 越界
#include <iostream>
#include <string>
using namespace std;

int main(){
    string str;
    int n;
    cin >> str;
    cin >> n;
    if(n > str.length() || n <= 0){
        cout << -1 << endl;
        return 0;
    }
    for(int i = 0; i <= str.length() - n; ++i){
        string temp = str.substr(i, n);
        cout << temp << ' ';
    }
    cout << endl;
    return 0;
}


编辑于 2020-05-30 13:26:28 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    int n,j=0;
    cin>>n;
    if(n>s.size())
        cout<<"-1"<<endl;
    else
    {
        cout<<s.substr(0,n);
        for(int i=1;i<=s.size()-n;i++)
            cout<<' '<<s.substr(i,n);
        cout<<endl;
    }
    return 0;
}

发表于 2019-07-03 10:18:02 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	int n,i;
	cin>>s;
	cin>>n;
	if(n<=0 || n>s.size())	cout<<"-1\n";
	else
	{
		for(i=0;i<=s.size()-n;i++)
		{
			cout<<s.substr(i,n)<<" ";
		}
		cout<<endl;
	}
} 

发表于 2020-08-19 15:03:32 回复(0)
a,b = input(),int(input())
print(' '.join([a[i:i + b] for i in range(len(a) - b + 1)]) if 0 < b <= len(a) else -1)

编辑于 2020-03-15 17:57:46 回复(0)
#include <iostream>
#include <string>

using namespace std;

int main(void)
{
    string s1;
    int i=0,n=0;
    cin >> s1>>n;
    if (s1.size()<n)
    {
        cout<<"-1"<<endl;
    }
    else
    {
        for ( i = 0; i <= s1.size()-n; i++)
        {
            cout<< s1.substr(i,n)<<" ";
        }
    }
    return 0;
}

发表于 2020-01-22 00:26:28 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main(){
    string str;
    int n;
    getline(cin,str);
    cin>>n;
    if(n<=str.size()&&n>0)
        for(int i=0;i<=str.size()-n;i++){
            cout<<str.substr(i,n);
            if(i!=str.size()-n)
                cout<<" ";
        }
    else
        cout<<-1;
    return 0;
}

发表于 2019-10-14 21:00:13 回复(0)
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
    string str;
    int n;
    vector <string> s;
    while(cin>>str)
    {
        s.clear();
        cin>>n;
        int length = str.size();
        if(length<n || n<0)
          cout << -1 << endl;
        else
        {
           for(int i=0;i<=length-n;i++)
           {
             s.push_back(str.substr(i,n));
           }
           for(auto it = s.cbegin();it!=s.cend();it++)
           {
             cout << *it << " ";
           }   
        }     
    }
 
    return 0;
}

发表于 2019-08-12 17:25:51 回复(0)
""""
子串
"""

if __name__ == "__main__":
    s = input().strip()
    n = int(input().strip())
    if len(s) < n or n <= 0:
        print(-1)
    else:
        ans = []
        for i in range(n, len(s) + 1):
            ans.append(s[i - n:i])
        print(' '.join(ans))

发表于 2019-07-12 10:57:44 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        int n = scanner.nextInt();
        int len = str.length();
        // n小于等于0也输出-1
        if (n > len || n <= 0) {
            System.out.println(-1);
        } else {
            System.out.print(str.substring(0, n));
            for (int i = 1; i <= len - n; i++) {
                System.out.print(" " + str.substring(i, i + n));
            }
        }
    }
}
发表于 2019-07-03 16:44:31 回复(0)
#include<stdio.h>
#include<string.h>
void printstring(char* str, int n) {
    int len = strlen(str);
    if(n<0)
        printf("-1\n");
    else if (len < n) {
        printf("-1\n");
    } else {
        for (int i = 0; i <=len - n; i++) {
            for (int j = 0; j < n; j++) {
                printf("%c", str[i + j]);
            }
            printf(" ");
        }
        printf("\n");
    }
}
int main() {
    char str[1000000000];
    scanf("%s", str);
    int n = 0;
    scanf("%d", &n);
    printstring(str, n);
    return 0;
}
编辑于 2024-02-16 19:45:40 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s=in.next();
        int n=in.nextInt();
        if(n<=0||n>s.length()) System.out.println(-1);
        else{
            for(int i=0,j=n;j<=s.length();i++,j++){
                System.out.printf("%s ",s.substring(i,j));
            }
        }
    }
}

发表于 2023-09-05 22:34:09 回复(0)
进口棉哦咯咯啊你咯哦看看咋了你自己想可以看看咯脚丫子您可以了娃娃安哦咯啦本来就扣卡阿们哦咯哦就可以了拿咯就可以呀啊叫我啦呀老公天你老拉咯了老咯啊
发表于 2022-08-25 18:31:07 回复(0)
#include<iostream>
#include<string>
int main()
{
    std::string s;
    int n;
    while(std::cin>>s)
    {
        std::cin>>n;
        if(n>s.size()||n<=0)std::cout<<-1<<std::endl;
        else 
        {
            for(int i=0;i<=s.size()-n;i++)std::cout<<s.substr(i,n)<<" ";
            std::cout<<std::endl;
        }
    }
    return 0;
}
发表于 2020-09-04 23:44:28 回复(0)
s = input()
n = int(input())

if n > len(s)&nbs***bsp;n <= 0:
    print("-1")
else:
    for i in range(len(s)-n +1):
        print(s[i:i+n], end = " ")

发表于 2020-07-02 21:24:42 回复(0)
#考虑边界条件
import sys
sub_str = sys.stdin.readline().strip()
n = int(sys.stdin.readline().strip())

if n>0 and len(sub_str)>=n:
    res = []
    for i in range(len(sub_str)-n+1):
        res.append(sub_str[i:i+n])
    print(' '.join(res))
else:
    print('-1')

发表于 2020-06-29 15:23:37 回复(0)
#include<iostream>
(720)#include<string>

using namespace std;

int main(void){
    string str;
    cin>>str;
    int n;
    cin>>n;
    if (n <= 0 || n > str.size()){
        cout<<-1<<endl;
        return 0;
    }
    for (int i = 0; i < str.size()-n+1; i++){
        cout<<str.substr(i, n)<<" ";
    }
    return 0;
}


发表于 2020-05-10 16:22:57 回复(0)
竟然要对        n<=0      判断
坑啊,这么低的通过率
编辑于 2020-04-28 18:58:00 回复(0)
太BT了,根本就没考虑n是非正整数的情况,疯狂报错非法访问🤣
import java.io.*;
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int n = Integer.parseInt(br.readLine());
        if(str.length() < n || n <= 0){
            System.out.println("-1");
            return;
        }
        for(int i = 0;i <= str.length()-n;i++){
            if(i == str.length()-n){
                System.out.print(str.substring(i) + " ");
            }else{
                System.out.print(str.substring(i,i+n) + " ");
            }
        }
    }
}


发表于 2020-04-11 11:17:32 回复(0)