牛客网刷题笔记

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(使用前将#替换为@)

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

随机推荐

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

    前言 真正的天才 是懂得在别人面前装糊涂的人 但如果他受到某种刺激 装糊涂也就没有必要了 低调惯了的人 总有一天 会一鸣惊人 韬盛和夫 大自然有一种特有的现象 自作聪明的动物往往不会活的太长 而那些看起不起眼的动物 往往隐藏着巨大的力量 笨
  • 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上写了 只是想写而已 刚开始写 肯定会很不理想 但是没关系 慢慢写吧 总会有提高的 今天在牛客网刷了一道求最长字串是回文数的长度