首页 > 试题广场 >

输出指定长度子串

[编程题]输出指定长度子串
  • 热度指数:3231 时间限制: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
strs = raw_input()
n = input()

if len(strs)< n or n<0:
    print -1
else:
    for i in range(len(strs)-n+1):
        print strs[i:i+n],

发表于 2019-03-31 19:21:51 回复(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 08:00:01 回复(0)
JavaScript(Node) 😎题目:蘑菇街🍄-输出指定长度字符串(穷举+slice
//穷举 字符串
// stringObject.slice(start,end)
//一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符
//-1 指字符串的最后一个字符
const readline = require('readline')
const rl = readline.createInterface({
    input: process.stdin,
    ouput: process.stdout
})
let inArr = []
rl.on('line',line=>{
    if(!line) return
    inArr.push(line)
    if(inArr.length === 2){
        let s = inArr[0]
        let n = +inArr[1]
        let res = []
        if(s.length < n || s == '' || n<1){
            console.log(-1)
        }else{
            for (let i = 0; i <= s.length-n; i++) {
                res.push(s.slice(i,i+n))
            }
        console.log(res.join(' '))
        }
    }
})

发表于 2020-02-26 21:48:15 回复(0)
#include <iostream>
#include <string>
using namespace std;

int  main() {
    string str;
    int n;
    cin >> str>>n;
    if (n > str.size()) {
        cout << -1;
    }
    else {
        unsigned int i = 0;
        for (;i < str.size() - n;++i) {
            cout << str.substr(i, n) << ' ';
        }
        cout << str.substr(i, n);

    }
    system("pause");
    return 0;
}
发表于 2019-09-06 15:42:45 回复(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-08-13 01:38:27 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    int n;
    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-09 08:50:14 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <iostream>
#include <string>
#include <vector>
using namespace std;

void
split_string(string raw_string,
    int dimension,
    int offset,
    int split_scale,
    vector<string>& vs_capacity) {
    if (offset + split_scale > dimension || offset > dimension || split_scale < 0)
        return;
    string sub_temp = raw_string.substr(offset, split_scale);
    vs_capacity.push_back(sub_temp);
    split_string(raw_string, dimension, offset + 1, split_scale, vs_capacity);
}

int main(int argc, char** argv) {
    string input_string;
    int split_scale;
    cin >> input_string >> split_scale;

    vector<string> vs_capacity;
    split_string(input_string, input_string.length(), 0, split_scale, vs_capacity);

    if (vs_capacity.size() <= 0)
        cout << -1;
    else {
        for (int i = 0; i < vs_capacity.size(); i++)
            cout << vs_capacity[i] << " ";
    }
    cout << endl;

    return 0;
}
编辑于 2019-04-04 11:41:22 回复(0)
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n;
    string s;
    cin >> s;
    cin >> n;
    if (s.length()>=n)
    {
        for (int j = 0; j < s.length()-n; j++)
        {
            for (int i = j; i < n+j; i++)
            {
                cout << s[i];
            }
            cout << " ";
        }
        

    }
    else
    {
        cout << "-1";
    }

}

发表于 2019-03-29 10:24:51 回复(0)
package main

import (
    "fmt"
)

func main() {
    var s string
    fmt.Scan(&s)
    var n int
    fmt.Scan(&n)
    if n<0||n>len(s){
        fmt.Print(-1)
        return
    }
    for i:=0;i<=len(s)-n;i++{
        fmt.Printf("%s ",s[i:i+n])
    }
}

发表于 2023-03-12 23:25:52 回复(0)
#include<stdio.h>
#include<string.h>
int main(){
    char s[1000];int num=0;
    scanf("%s %d",&s,&num);
    int len=strlen(s);
    if(num>0&&num<=len){
        for(int i=0;i<=len-num;i++){
        for(int j=0;j<num;j++){
            if(j+i>=len) break;
            printf("%c",s[i+j]);
        }
        printf(" ");
        }
    }else printf("-1");
}

发表于 2021-06-28 09:40:04 回复(0)
#include<iostream>
(720)#include<string>
using namespace std;
int main() {
	int N;
	string S;
	cin >> S;
	cin >> N;
	int j=0;
	if (N>0&&N<=S.length())
	{
		for (int j = 0; j + N <=S.length() ; j++)
		{
			for (int i = j; i <j + N; i++)
			{
				cout << S[i];
			}
			cout << " ";
		}
	}
	else
	{
		cout << -1 << endl;
	}
	system("pause");
	return 0;
}

发表于 2020-05-02 12:42:46 回复(0)
a,b = input(),int(input())
if 0 < b <= len(a):
    print(' '.join([a[i:i + b] for i in range(len(a) + 1 - b)]))
else:
    print(-1)

编辑于 2020-03-20 14:30:12 回复(0)
line = int(input())
a = int(input())
strl = str(line)
b= []
 
if a>0 and a<=len(strl):
    str_out =strl[0:a] + ' '
    for i in range(len(strl)-a):
        i +=1
        str_l = strl[i:i+a]
        str_out += str_l + ' '
    print(str_out)
else:
    print(-1)

发表于 2019-08-26 21:48:18 回复(0)
s = input()
n = int(input())
if n>len(s) or n<=0: print(-1)
else:
    for i in range(len(s)-n+1):
        print(s[i:i+n], end=' ')

发表于 2019-07-19 11:04:58 回复(0)
#include<iostream>
#include<vector>
#include<string>
usingnamespacestd;
intmain(){
    string s;
    cin>>s;
    intlen=s.size();
    intn;
    cin>>n;
    if(n<=0 || n>len)
        cout<<-1;
    else{
        for(inti=0;i<=len-n;i++){
            for(intj=0;j<n;j++)
                cout<<s[i+j];
            cout<<' ';
        }
    }
    return0;
}
发表于 2019-04-06 20:45:43 回复(0)
#include <iostream>
using namespace std;

int main(int argc, const char * argv[]) {
    string str;
    int n,len;
    cin >> str;
    cin >> n;
    if(n<1 || n>str.size())
        cout << -1 << endl; 
    else
        for(int i=0;i<str.size()-n+1;i++)
        {
            cout << str.substr(i, n) << " ";
        }
}

编辑于 2019-04-04 17:56:54 回复(0)
num_str = input()
num_str = num_str.split( )
num_case = int(num_str[-1])
num_str = str(num_str[0])
 
#print(num_str)
#print(num_case)
num_list = list(map(int,num_str))
 
def get_str(num_set_, num_case_):
    Case_list = []
    if num_case_<= 0:
        return -1
    elif len(num_set_)<num_case_:
        return -1
    else:
        for i in range(len(num_set_) - num_case_+1):
            real_case = num_set_[i:(num_case_+i)]
            str_case = ''.join([str(x) for x in real_case])
            Case_list.append(str_case)
        #Case_list  = set(Case_list)
        list2 = []
        for item in Case_list:
            if item not in list2:
                list2.append(item)
        result = ','.join(list2)
        return result
     
result = get_str(num_list,num_case)
print(result)

#为什么我这个提交不能通过 ‘12345678 1’ 的用例呢。。。我在本地可以输出‘1,2,3,4,5,6,7,8’的啊
发表于 2019-04-03 16:45:24 回复(0)

遍历输出就行了

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc =new Scanner(System.in);
        String a = sc.nextLine();
        int len = sc.nextInt();
        sc.close();
        if(a.length()<len||len<1){
            System.out.print("-1");
            return;
        }
        for(int i=0;i<=a.length()-len;i++){
            System.out.print(a.substring(i,i+len)+" ");
        }
    }
}
发表于 2019-04-02 17:30:18 回复(0)
str = raw_input()
n = input()
if n > len(str) or n < 0:
    print -1
else:
    s = ''
    for i in range(0,len(str)-n+1,1):
        s = s + str[i:i+n] + ' '
    print s[0:len(s)-1]
发表于 2019-03-30 16:09:56 回复(0)
#include<stdio.h>
#include<string.h>
int main(){
    char word[100];
    int num;
    scanf("%s",word);
    scanf("%d",&num);
    int len = strlen(word);

    if(num > len)
        printf("-1");
    else
        for(int i = 0; i <= len - num; i++){
            for(int j = 0; j < num; j++){
                printf("%c",word[i+j]);
            }
            printf(" ");
        }

    return 0;
}

发表于 2019-03-30 11:10:08 回复(0)