【错题集-编程题】小红的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 这一要求,审题不仔细!


相关文章
|
7月前
小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用。现在对于一个数字x,小明同学定义出了两个函数f(x)和g(x)
小明同学学习了不同的进制之后,拿起了一些数字做起了游戏。小明同学知道,在日常生活中我们最常用的是十进制数,而在计算机中,二进制数也很常用。现在对于一个数字x,小明同学定义出了两个函数f(x)和g(x)
120 1
|
2月前
lanqiao oj 1203 小明的字符串
lanqiao oj 1203 小明的字符串
12 0
|
7月前
|
测试技术
【错题集-编程题】添加字符(字符串)
【错题集-编程题】添加字符(字符串)
|
7月前
|
机器学习/深度学习
PTA-打印九九口诀表
该程序生成1到N的下三角九九乘法表。输入一个1到9的正整数N,输出1*1到N*N的乘法表达式,等号右侧数字左对齐且占4位。示例输入4,输出1*1=1至4*4=16的口诀表。代码通过输入n值,使用两层循环结构实现乘法规则的打印。
120 0
|
7月前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
|
7月前
|
算法 搜索推荐 程序员
第四十八练 请以递归方式实现反转字符串的函数
第四十八练 请以递归方式实现反转字符串的函数
39 2
#yyds干货盘点# 第三十五题-字符串字符统计
#yyds干货盘点# 第三十五题-字符串字符统计
95 0
#yyds干货盘点# 第三十五题-字符串字符统计
代码随想录刷题|LeetCode 216.组合总和III 17.电话号码的字母组合
代码随想录刷题|LeetCode 216.组合总和III 17.电话号码的字母组合
2015年蓝桥杯 题六 奇妙的数字 填空题 (全排列+check+转字符串)
2015年蓝桥杯 题六 奇妙的数字 填空题 (全排列+check+转字符串)