牛客网刷题笔记

2023-11-02

本来想在牛客网上刷完一道在线编程题后就写以下体会笔记,可是找了半天都没找到在哪里写东西,无奈,我就只好来CSDN上写了,只是想写而已,刚开始写,肯定会很不理想,但是没关系,慢慢写吧,总会有提高的。

今天在牛客网刷了一道求最长字串是回文数的长度,刚开始的时候,我用两个指针,一个指前边,一个指后边,对比两个指针指向的值,相等则前边的指针后移,后边的指针前移,然后再判断是否相等,如果不相等,那么就不是回文数,前边的指针回到第一次开始的地方,后边的指针回到第一次开始的地方,前边的指针再自加后移移位,然后再判断。。。逻辑总是感觉很混乱,这样本文没法在很短的时间内写出漂亮正确的代码。今天早上,我又想到了一个方法,不是求子串回文数吗?那我先求出子串,再判断该子串是不是回文数,是的话就返回该子串长度不就行了吗!这样逻辑不就很清楚了吗!1.先求子串,求子串的函数有三个参数,原字符串,起始位置,终止位置,然后返回类型为string的字符串,至于起始位置和终止位置,我就用两个for循环来变化。2,怎么判断回文数。回文数的特点是从左向右和从右向左是完全一样的,那我就先将子串压入栈中,然后出栈创建另一个字符串,判断两个字符串是否相等,若相等,就返回字符串长度,若不相等,就返回0。然后在主函数中,需要定义一个当前长度current_length和最大长度max_length,每次返回的字符串长度给当前长度current_length,然后比较当前长度和最大长度哪个大,如果当前长度大于最大长度,那就把当前长度的值赋给最大长度。只要逻辑清晰,写代码就很清楚了,一次也就能写正确,当然是在手指或笔头不出错的情况下了。最后,附上代码,供以后查验:

class Palindrome {
public:
    string getSubString(string A, int begin, int end) {
        string B;
        for (int i = begin; i < end; ++i) {
            B.push_back(A.at(i));
        }
        return B;
    }
    int lengthOfPalindrome(string A) {
        stack<char> s;
        string B;
        for (int i = 0; i < A.size(); ++i)
            s.push(A.at(i));
        while (!s.empty()) {
            B.push_back(s.top());
            s.pop();
        }
        if (A == B)
            return A.size();
        else
            return 0;
    }
    int getLongestPalindrome(string A, int n) {
        // write code here
        int current_length = 0, max_length = 0;
        for (int i = 0; i < n; ++i)
            for (int j = n; j > 0; --j) {
            string B = getSubString(A, i, j);
            current_length = lengthOfPalindrome(B);
            if (current_length > max_length)
                max_length = current_length;
        }
        return max_length;
    }
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

牛客网刷题笔记 的相关文章

  • 程序员转行做什么工作比较好?

    作为程序员来说 其实程序员的发展之路有多种 你可以结合自己的实际情况去做出相应的选择 程序员最基本的发展路线就是 从普通程序员做到熟练的开发者 接下来就会有多种选择 你可以选择做高级开发工程师 也可以成为一个一线熟练的开发人员 或者你也可以
  • 网络编程是什么

    转载 http peixun eol cn company company article detail php articleid 15033 对于初学者 或者没有接触过网络编程的程序员 会觉得网络编程涉及的知识很高深 很难 其实这是一种
  • 【数据结构】详解栈的应用之表达式求值

    首先明白 前缀表达式 符号在前 如 3456 中缀表达式 符号在中间 如 3 4 5 6 后缀表达式 符号在最后 如34 5 6 后缀表达式不出现括号 中缀表达式转后缀表达式的方法 1 遇到数字 直接输出 添加到后缀表达式中 2 栈为空时
  • 【Vue】从0-1全系列Vue教程带你启航!

    hello 我是小索奇 Vue js 已经备好文章 预更新哈 涵盖 Vue2 和 Vue3 涵盖代码示例 拓展内容 图解 疑难解答 让大家用最通俗的方式来学会 Vue 本系列会考虑到新手 会由浅入深 即使你是老玩家 也可以收藏备用 其中有很
  • Java 读取resources下的资源文件

    Web项目中应该经常有这样的需求 在maven项目的resources目录下放一些文件 比如一些配置文件 资源文件等 文件的读取方式有好几种方式 本文会对常用的读取方式做一个总结 并说明一下应该注意的地方 准备工作 新建一个spring t
  • 关于static 的各种数据类型 及在面向对象编程中的应用

    一 按存储区域分 全局变量 静态全局变量和静态局部变量都存放在内存的静态存储区域 局部变量存放在内存的栈区 1定义全局静态变量的好处 lt 1 gt 不会被其他文件所访问 修改 lt 2 gt 其他文件中可以使用相同名字的变量 不会发生冲突
  • android判断一个Activity是否处于栈顶

    实际开发中我们需要很多情况需要判断某个activity是否位于栈顶 也许会给新的小伙伴带来困扰 那么直接上代码吧 也没几行 判断某activity是否处于栈顶 return true在栈顶 false不在栈顶 private boolean
  • 8个超实用的Python库合集,推一次火一次!

    Python 是一个很棒的语言 它是世界上发展最快的编程语言之一 它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性 整个 Python 及其库的生态系统使它成为全世界用户 初学者和高级用户 的合适选择 它的成功和流行的原
  • 3年c/c++开发总结(二):书籍[1]

    对3年来学习中书籍的整理 评价 主要为c c 方面 分数为个人意见 虽然大家都知道 但还是强调下 免得口水 分1 5 5为最高 格式 英文名 中文名 作者 出版社 个人评价 评分 无译者说明是因为建议看原版 p s 国产图书要努力 因看过的
  • 工控上位机程序为什么只能用C语言?

    工控上位机程序并不只能用C 开发 实际上在工业自动化领域中 常见的上位机开发语言包括但不限于以下几种 C C 是一种常用的编程语言 在工控领域中被广泛使用 它具有良好的面向对象特性和丰富的类库支持 可以实现高性能的上位机程序开发 C C C
  • Python如何执行shell脚本

    Python如何执行shell脚本 自从出了Pyhon3 5之后 os模块下的system os popen 基本被废弃了 因此如下只介绍2种方式 一 使用commands模块 有三个方法可以使用 1 commands getstatuso
  • Python沙雕故事生成器

    Python故事生成器 本文章小编来给大家分享使用Python制作一个故事生成器 仅供娱乐 一 知识归纳 StringVar 控件变量 python中在使用界面编程时 用于跟踪数值不断发生变化的变量 确保数值的变更可以随时在根窗口上面显示出
  • 静态链表

    include
  • java 字符串拼接

    最常用的有4种方法 运算符 如果拼接的都是字符串直接量 则适合使用 运算符实现拼接 public static void main String args method1 字符串拼接 public static void method1 S
  • 多处理器编程的艺术(二)-并行程序设计

    当处理器的性能的发展受到各方面因素的限制的时候 计算机产业开始用多处理器结构实现并行计算来提高计算的效率 我们使用多处理器共享存储器的方式实现了多处理器编程 也就是多核编程 当然在这样的系统结构下我们面临着各种各样的挑战 例如如何协调各个处
  • 栈的基本操作(创建栈,压栈,出栈,遍历栈,清空栈,判断是否为空栈)

    include
  • 腾讯、阿里多位大佬共同推荐!封神级Python学习路线+核心知识点笔

    人工智能时代下 Python毫无疑问是最热的编程语言 有人夸它功能强大还上手轻松 有人说它学习曲线不那么陡峭 但是更多的人 在推开Python的大门后却发现 Python入门容易但精通却不易 你是否也曾傻傻分不清 列表 元组 字典 集合 等
  • 为什么要学习Python?

    前言 Python 是当今非常流行的编程语言 在互联网上经常可以看到他的身影 它应用非常广泛 例如编程 Web 开发 机器学习和 数据科学Q 等 TIOBE 官网近日公布了 2023 年 8 月的编程语言排行榜 Python 依然排行第一
  • 请问想要在嵌入式行业扎根成长的人何种学历更为合适?

    今日话题 想要在嵌入式行业扎根成长的人何种学历更为合适 嵌入式行业容纳了来自不同学历背景的人 包括专科 本科和研究生 甚至那些来自非相关领域的人 在这个领域 学历并非唯一的关键 分享一份由一位oppo sp offer的学长制作的学习资料包
  • 8种Python字符串拼接的方法,你知道几种?

    一 join函数 join 是 python 中字符串自带的一个方法 返回一个字符串 使用语法为 将一个包含多个字符串的可迭代对象 字符串 元组 列表 转为用分隔符sep连接的字符串 列表 列表必须为非嵌套列表 列表元素为字符串 str 类

随机推荐

  • 笨人可以学计算机吗,为什么有的笨人一旦开窍,其人生就像开了挂似的呢?

    前言 真正的天才 是懂得在别人面前装糊涂的人 但如果他受到某种刺激 装糊涂也就没有必要了 低调惯了的人 总有一天 会一鸣惊人 韬盛和夫 大自然有一种特有的现象 自作聪明的动物往往不会活的太长 而那些看起不起眼的动物 往往隐藏着巨大的力量 笨
  • Bootstarp入门教程(6) 表格

    基本案例 为任意 table 标签添加 table可以为其赋予基本的样式 少量的内补 padding 和水平方向的分隔线 table
  • Redis中的事务

    1 Redis事务的定义 Redis事务是一个单独的隔离操作 事务中的所有命令都会序列化 然后按照顺序地执行 事务在执行的过程中 不会被其他客户端发送来的命令请求所打断 其实就是一个缓存队列 将所有任务放入 然后再某一个阶段 将其中的任务拿
  • C语言(Head First C)-9_1:静态库与动态库:静态库

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 9 1 静态库与动态库 静态库 我们已经见识过标准库的威力了 现在是时候在代码中发挥这种威力了 本章内容 创建自己的库 并在多个程序中复用相同代码 通过动态库在运行时
  • DATA_FORMAT = 'NCHW' 和DATA_FORMAT = 'CHWN'

    转载自https blog csdn net qq 39622065 article details 81228915 NHWC batch in height in width in channels NCHW batch in chan
  • nginx日志文件删除后空间不能释放,必须重启服务才能释放空间

    一台nginx服务器发现磁盘空间撑爆了 进去看全是日志文件把磁盘写满了 可是用rm删除log文件后发现磁盘空间并没有被释放 明明文件没有了呀 郁闷 于是google下 未释放磁盘空间原因 在Linux或者Unix系统中 通过rm或者文件管理
  • 千万级规模高性能、高并发的网络架构经验分享

    from https www cnblogs com shanyou p 5048099 html utm source tuicool utm medium referral 架构以及我理解中架构的本质 在开始谈我对架构本质的理解之前 先
  • 最长回文---Manacher算法解析(俗称:马拉车算法)

    题目链接 https cn vjudge net contest 320014 problem E Problem Description 给出一个只由小写英文字符a b c y z组成的字符串S 求S中最长回文串的长度 回文就是正反读都是
  • vsCode快捷方式设置(ubuntu版本)

    ubuntu版本的vscode 快捷键设置的地方 文件 gt 首选项 gt 键盘快捷方式 按键绑定 gt 更改按键绑定
  • <<软件研发之道>>经验法则4---不要认为别人是笨蛋

    转载自 http book 51cto com art 201107 277211 htm 参考书籍 lt lt 软件研发之道 gt gt 我在这里重申 软件是一种知识产权 你必须运用智慧才能开发出软件 你在工作中调用的智慧越多 你最终得到
  • 特征工程之分箱

    一般在建立分类模型时 需要对连续变量离散化 特征离散化后 模型会更稳定 降低了模型过拟合的风险 比如在建立申请评分卡模型时用logsitic作为基模型就需要对连续变量进行离散化 离散化通常采用分箱法 分箱的重要性及其优势 离散特征的增加和减
  • 测试用例编写方法_划分等价类

    一 划分等价类概述 计算两个1 100之间整数的和 穷举测试 1 2 3 1 3 4 1 4 5 1 100 101 100 1 101 100 2 102 100 3 103 100 100 200 这样肯定是不行的 我们需要分析 二 等
  • 数据库原理实验报告【全集】

    如果对你有帮助 记得点赞哦 实验1 8 SQL Server 2008的安装及管理工具的使用 SQL Server数据库的管理 SQL Server数据表的管理 数据查询 索引和视图 数据完整性 Transact SQL程序设计 存储过程和
  • 如何在 XMind 中绘制流程图?

    进阶教程 如何在 XMind 中绘制流程图 XMind 是专业强大的思维导图软件 由于其结构没有任何限制 很多朋友特别喜欢用它来绘制流程图 禁不住大家的多次询问 今天 GTQ28就将这简单的流程图绘图方法分享给大家 在 XMind 中 绘制
  • matlab声音信号处理 频率图 信号过滤和播放声音

    1 内容简介 略 425 可以交流 咨询 答疑 2 内容说明 略 3 仿真分析 clear clc close all mini project x fs audioread mini proj wav x x 1 N length x n
  • python执行js代码进行aes加解密以及python代码与前端交互加解密

    在前后端交互的过程中 基于安全考虑 往往需要对某些数据进行加密传输 我们以传输密码为例 如果密码明文传输的话 有被截取的风险 因此我们可以考虑采取rsa加密或者aes加密的方式 本文采用aes加密的方法进行传输 aes加解密 前后端要商定好
  • 11张网络安全思维导图,运维快收藏起来强化你的服务器吧!

    本文包含以下思维导图 网络安全绪论 扫描与防御技术 网络监听及防御技术 口令破解及防御技术 欺骗攻击及防御技术 拒绝服务供给与防御技术 缓冲区溢出攻击及防御技术 Web攻击及防御技术 木马攻击与防御技术 计算机病毒 网络安全发展与未来 网络
  • 如何在网上赚钱,下班兼职赚钱,这8种方法或许有适合你的

    网上赚钱 简称 网赚 网赚 主要是指利用计算机 服务器等设备 通过互联网上的各种信息差 从互联网上赚钱的一种方式 兼职赚钱 简单点说就是 你有一份自己的工作是正职 除此之外你还可以再找一份别的工作作为副职 就是工作的同时 兼作另一份工作 叫
  • windows 查看端口占用情况

    方法一 开始 运行 cmd 进入命令提示符 输入netstat ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项 可以在任务管理器中选 查看 选择列 方法二 查看所有的端口占用情
  • 牛客网刷题笔记

    本来想在牛客网上刷完一道在线编程题后就写以下体会笔记 可是找了半天都没找到在哪里写东西 无奈 我就只好来CSDN上写了 只是想写而已 刚开始写 肯定会很不理想 但是没关系 慢慢写吧 总会有提高的 今天在牛客网刷了一道求最长字串是回文数的长度