【错题集-编程题】小红的ABC(字符串 + 找规律)

简介: 【错题集-编程题】小红的ABC(字符串 + 找规律)


一、分析题目

算法思路:由于题目要找的是最短的回文子串,并且只有三个字母:a、b、c,因此最短的回文子串的长度要么是 2,要么是 3。因此,我们仅需枚举所有的⼆元组以及三元组就好了。


二、代码

1、看题解之前AC的代码

#include <iostream>
using namespace std;
 
int main()
{
    string s;
    cin >> s;
    int n=s.size();
    int len=101;
    for(int i=0; i<n; i++)
    {
        //奇数长度的扩展
        int left=i, right=i;
        while(left>=0 && right<n && s[left]==s[right])
        {
            if(right-left+1<len && right-left+1>1) len=right-left+1;
            left--;
            right++;
        }
 
        //偶数长度的扩展
        left=i, right=i+1;
        while(left>=0 && right<n && s[left]==s[right])
        {
            if(right-left+1<len && right-left+1>1) len=right-left+1;
            left--;
            right++;
        }
    }
    if(len>1 && len<101) cout << len << endl;
    else cout << -1 << endl;
    return 0;
}

2、值得学习的代码

#include <iostream>
#include <string>
 
using namespace std;
 
string s;
 
int main()
{
    cin >> s;
    int ret = -1; // 有可能并没有回⽂串
    int n = s.size();
 
    for(int i = 0; i < n; i++)
    {
        if(i + 1 < n && s[i] == s[i + 1]) // 判断⻓度为 2 的⼦串
        {
            ret = 2;
            break;
        }
        if(i + 2 < n && s[i] == s[i + 2]) // 判断⻓度为 3 的⼦串
        {
            ret = 3;
        }
    }
 
    cout << ret << endl;
 
    return 0;
}

三、反思与改进

没仔细看题目要求我就直接按着之前写过的:5. 最长回文子串 - 力扣(LeetCode)思路去写了,忽略了题目要找的是最短的回文子串,并且只有三个字母:a、b、c 这一要求,审题不仔细!


相关文章
|
2月前
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
48 0
|
2月前
lanqiao oj 1203 小明的字符串
lanqiao oj 1203 小明的字符串
12 0
|
7月前
|
测试技术
【错题集-编程题】添加字符(字符串)
【错题集-编程题】添加字符(字符串)
|
7月前
|
canal Java
java字符串练习题7、验证回文串
java字符串练习题7、验证回文串
90 0
|
C语言
【C语言】寻找两个‘单身狗’数
【C语言】寻找两个‘单身狗’数
【C语言】寻找两个‘单身狗’数
#yyds干货盘点# 第三十五题-字符串字符统计
#yyds干货盘点# 第三十五题-字符串字符统计
95 0
#yyds干货盘点# 第三十五题-字符串字符统计
python:考试前,练手习题(斐波那契数,字符串排序,九九乘法表,水仙花数,求和...求数字倍数,(保佑不挂科!)
整理一些练手的题目(含代码),可能不是特别优美,有些繁琐,但是等有时间再优化吧~~ 1.水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。 请编写程序,在一行内,按从小到大的顺序输出所有水仙花数,以空格作为分割
2015年蓝桥杯 题六 奇妙的数字 填空题 (全排列+check+转字符串)
2015年蓝桥杯 题六 奇妙的数字 填空题 (全排列+check+转字符串)
|
算法
【字符串】最小表示法—题型讲解
【字符串】最小表示法—题型讲解
151 0