列表

详情


NC231877. 简单的字符串问题

描述

有一个只含‘a’, 'b', 'c'的字符串,问你这个字符串最短的、长度超过 1 的回文子串的长度是多少?
子串定义:字符串取一段连续的区间。例如"abcca"的子串有"ab"、"bcca"等,但"aca"则不是它的子串。
回文的定义:一个字符串正着读和倒着读都是相同的,那么定义它的回文的。

输入描述

一个只包含 'a' , 'b' , 'c' 三种字符的字符串。
数据范围:字符串长度不小于2,且不超过100

输出描述

如果不存在长度超过1的回文子串,则输出-1。
否则输出长度超过1的最短回文子串的长度。

示例1

输入:

abcca

输出:

2

说明:

“cc”即为其最短回文子串

示例2

输入:

abcab

输出:

-1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 3ms, 内存消耗: 288K, 提交时间: 2021-12-21 13:51:03

#include<stdio.h>
int main()
{
    char ch[105];
    scanf("%s",ch);
    int i=0,n=strlen(ch),min=-1,c;
    if(ch[0]==ch[1])
        min=2;
    for(i=0;i<n-2 && n>2;i++)
    {
        if(ch[i]==ch[i+1])
            min=2;
        if(ch[i]==ch[i+2] && min!=2)
            min=3;
    }
        printf("%d",min);
    return 0;
}

C++ 解法, 执行用时: 3ms, 内存消耗: 408K, 提交时间: 2022-01-16 19:49:07

#include<iostream>
using namespace std;
int main(){
    string s;
    cin>>s;
    for(int i=1;i<s.size();i++)
        if(s[i]==s[i-1])
            return cout<<2,0;
    for(int i=1;i<s.size();i++)
        if(s[i-1]==s[i+1])
            return cout<<3,0;
    cout<<-1;
}

pypy3 解法, 执行用时: 122ms, 内存消耗: 25936K, 提交时间: 2022-01-22 16:33:31

s=input()
ss=""
for i in range (len(s)-1):
    if(s[i]==s[i+1]):
        print('2')
        exit()
for i in range (len(s)-2):
    if(s[i]==s[i+2]):
        print('3')
        exit()
print('-1')

Python3 解法, 执行用时: 42ms, 内存消耗: 4652K, 提交时间: 2022-01-06 16:04:46

a = input()
f = 0
f1 = 0
for i in range(1, len(a)):
    if a[i] == a[i - 1]: f = 1
    if i + 1 < len(a) and a[i - 1] == a[i + 1]: f1 = 1
if f: print('2')
elif f1: print('3')
else : print('-1')

上一题