首页 > 试题广场 >

偶串

[编程题]偶串
  • 热度指数:453 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
如果一个字符串由两个相同字符串连接而成,就称这个字符串是偶串。例如"xyzxyz"和"aaaaaa"是偶串,但是"ababab"和"xyzxy"却不是。
牛牛现在给你一个只包含小写字母的偶串s,你可以从字符串s的末尾删除1个或者多个字符,保证删除之后的字符串还是一个偶串,牛牛想知道删除之后得到最长偶串长度是多少。

输入描述:
输入包括一个字符串s,字符串长度length(2 ≤ length ≤ 200),保证s是一个偶串且由小写字母构成


输出描述:
输出一个整数,表示删除之后能得到的最长偶串长度是多少。保证测试数据有非零解
示例1

输入

abaababaab

输出

6
从字符串末尾逐一删一个字符,然后判断是否连接。
#include<stdio.h>
#include<string.h>
int main()
{
	char a[100000];
	while (gets(a))
	{
		int k,i,j=0;
		char t[100000],b1[100000],b2[100000];
		k=1;
		while (k!=strlen(a))
		{
			for(i=0;i<strlen(a)-k;i++) t[j++]=a[i];
			t[j]='\0';
			j=0;
			if(strlen(t)%2==0)
			{
				for(i=0;i<strlen(t)/2;i++) b1[j++]=t[i];
				b1[j]='\0';
				j=0;
				for(i=strlen(t)/2;i<strlen(t);i++) b2[j++]=t[i];
				b2[j]='\0';
				j=0;
				if(strcmp(b1,b2)==0) 
				{
					printf("%d\n",strlen(t));
					break;
				}
			}
			k++;
		}
	}
	return 0;
}


发表于 2021-09-30 23:59:46 回复(0)
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;


int main(){
    string str;
    getline(cin, str);
    int len = str.length();
    //cout<<len;
    
    int k = 1;  //注意:题目是删除一个或多个 所以初始化从删一个开始
    while (k!=len)
    {
        
        int sublen = (len-k) /2;
        //cout << "k,"<< k << "sublen" << sublen << endl;
        bool check = true;
        for(int i = 0; i < sublen; i++){
            if(str[i] != str[i+sublen] || (len-k)%2 == 1) {  //回文的话 if(str[i] != str[len-k-i-1])
                check = false;
            }            
        }
        if(check == true) 
        {
            printf("%d\n", len-k);
            break;
        }    
        k++;
     }

    return 0;
}

编辑于 2022-06-30 15:30:25 回复(0)
def evenstring(s:str):
    s_len = len(s)
    if s_len > 2:
        for i in range(s_len-2, 0, -2):
            new_str = s[0:i]
            if new_str[0:i//2] == new_str[i//2:i]:
                print(i)
                return
    else:
        print(2)
        return
s = input()
evenstring(s)
发表于 2022-02-17 21:21:00 回复(0)
给的例子就有问题,abaababaab ,输出长度为6,那就是说重复的字符串是aba,可是默认最开始不删除也可以呀,输出长度是10,字符串是abaab呀
发表于 2021-07-29 16:04:39 回复(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
importjava.util.Scanner;
 
publicclassMain {
    publicstaticvoidmain(String[] args) {
        Scanner sc = newScanner(System.in);
        String s = sc.next();
        intsum=10;
        for(inti=s.length()/2-1;i>0;i--){
            if(s.substring(0,i).equals(s.substring(i,2*i)))
            {
                sum=i*2;
                break;
            }
        }
        System.out.println(sum);
    }
}
发表于 2021-07-14 10:46:38 回复(0)