首页 > 试题广场 > 输出指定长度子串
[编程题]输出指定长度子串
  • 热度指数:2989 时间限制: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
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)
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        int n = in.nextInt();
        if (n<= 0 || n>s.length()){
            System.out.println(-1);
            return;
        }
        for (int i=0,j=n;j<=s.length();i++,j++){
            System.out.print(s.substring(i,j)+" ");
        }
    }
}

编辑于 2019-08-14 15:05:43 回复(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 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)
#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)
""""
子串
"""

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 <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    string str;
    getline(cin,str);
    int len = str.length();
    int n;
    cin >> n; 
    if(len<n || n<=0)    //防止下标越界
    {
        cout << -1 << endl;
        return 0;
    }
    Up(i,0,len-n)
    {
        printf("%s%s",str.substr(i,n).c_str(),i==len-n?"\n":" ");
    }
    return 0;
}

发表于 2019-10-04 16:18:56 回复(0)
param = input()
n = int(input())
if n>len(param) or n<1:
    print(-1)
else:
    subset = []
    for i in range(len(param)-n+1):
        subset.append(param[i:(i+n)])
    print(' '.join(subset))
发表于 2019-08-24 10:34:24 回复(0)
s = input()
n = int(input())
l = len(s)
if n > l or n <= 0:
    print('-1')
else:
    ans = []
    for i in range(l-n+1):
        ans.append(s[i:i+n])
    print(" ".join(ans))

发表于 2019-08-19 10:03:40 回复(0)


import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
int num = scanner.nextInt();
if (num > string.length() || num < 0) {
System.out.println(-1);
return;
}
char[] chars = string.toCharArray();
for (int i = 0; i < chars.length - num + 1; i++) {
for (int j = 0; j < num; j++) {
System.out.print(chars[i + j]);
}
System.out.print(" ");
}
}

}

编辑于 2019-07-26 16:08:07 回复(0)
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int n = sc.nextInt();
        
        getString(str, n);
        
    }
    
    //获取一个子串
    public static void getString(String str, int n){
        String s = "";
        int len = str.length();
        int x = len - n + 1;
        if(x <= 0 || n <= 0){
            System.out.print(-1);
        }else{
            for(int j = 0; j <x; j++){
                for(int i = 0; i < n; i++){
                    s = s + str.charAt(j + i);
                }
                System.out.print(s + " ");
                s = "";
            }
        }
        
        
    }
}
发表于 2019-07-25 17:18:23 回复(0)
s = input()
n = int(input())
if n<=0 or n>len(s):
    print(-1)
else:
    res = []
    for i in range(len(s)-n+1):
        res.append(s[i:i+n])
    for i in res:
        print(i, end=' ')

发表于 2019-07-09 20:48:21 回复(0)