列表

详情


NC230720. 小红的ABC

描述

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

输入描述

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

输出描述

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

示例1

输入:

abcca

输出:

2

说明:

"cc"即为其最短回文子串。

示例2

输入:

abcab

输出:

-1

原站题解

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

Go 解法, 执行用时: 3ms, 内存消耗: 1004K, 提交时间: 2023-08-13 13:43:41

package main
import "fmt"
func main(){
    var s string
    fmt.Scanf("%s",&s)
    n := len(s)
    res := -1
    for i := 0; i < n - 2; i++ {
        if s[i] == s[i+2] {
            res = 3
        }
    }
    for i := 0; i < n -1; i++ {
        if s[i] == s[i+1] {
            res = 2
        }
    }
    fmt.Printf("%d",res)
}

Python3 解法, 执行用时: 42ms, 内存消耗: 4576K, 提交时间: 2023-08-13 13:43:21

s=input()
minlen=-1
for i in range(len(s)-1):
    for j in range(i+1,len(s)):
        if s[i:j]==s[j:i:-1]:
            minlen=j-i+1
print(minlen)

上一题