[leetcode]5. 最长回文子串 647. 回文子串

昨日刷题,今日补发

解题思路

中间扩展,遍历数组,以每一项为中心,或以每两项为中心,向外拓展。

学习一下pair概念,还有string的substr的用法

以下是leetcode第五题

C++做法

class Solution {
public:pair<int, int> expandAroundCenter(const string& s, int left, int right) {while (left >= 0 && right < s.size() && s[left] == s[right]) {--left;++right;}return {left + 1, right - 1};}string longestPalindrome(string s) {int start = 0, end = 0;for (int i = 0; i < s.size(); ++i) {auto [left1, right1] = expandAroundCenter(s, i, i);auto [left2, right2] = expandAroundCenter(s, i, i + 1);if (right1 - left1 > end - start) {start = left1;end = right1;}if (right2 - left2 > end - start) {start = left2;end = right2;}}return s.substr(start, end - start + 1);}
};

C语言

其实C语言思路与C++类似,因为返回值只有一个,所以,我做题时候没有封装成函数,如果封装成函数,可以仿照pair对组的性质,将left和right封装成结构体
struct index_pair { int left; int right; };

int check(int left, int right, char *s)
{if (left < 0 || right > strlen(s))return 0;if (s[left] == s[right]) {return 1;}return 0;
}char * longestPalindrome(char * s){int slen = strlen(s);int left = 0;int right = 0;int save_left = 0;int save_right = 0;int count_1 = 0;int count_2 = 0;int count_tmp;int count = 0;for (int i = 0; i < slen; i++) {left = i;right = i;while (check(left, right, s)) {left--;right++;}left += 1;right-= 1;count_tmp = right - left + 1;//printf("count tmp = %d\n", count_tmp);if (count < count_tmp) {count = count_tmp;save_left = left;save_right = right;}if (left == slen) {break;}left = i;right = i + 1;while (check(left, right, s)) {left--;right++;}left += 1;right-= 1;count_tmp = right - left + 1;//printf("2. count tmp = %d\n", count_tmp);if (count < count_tmp) {count = count_tmp;save_left = left;save_right = right;}}char *res = (char *)malloc(sizeof(char) * (count + 1));//printf("%d, %d\n", save_left, save_right);strncpy(res, &s[save_left], sizeof(char) * count);res[count] = 0;return res;
}

以下是647题,差不多

int check(int left, int right, char *s)
{if (left < 0 || right > strlen(s))return 0;if (s[left] == s[right]) {return 1;}return 0;
}int countSubstrings(char * s){int slen = strlen(s);int left = 0;int right = 0;int count = 0;for (int i = 0; i < slen; i++) {left = i;right = i;while (check(left, right, s)) {left--;right++;count++;}left = i;right = i + 1;while (check(left, right, s)) {left--;right++;count++;}}return count;
}

pair

pair是将2个数据组合成一组数据,如stl中的map就是将key和value放在一起来保存,或者当一个函数需要返回2个数据的时候,也可以选择pair

pair的实现是一个结构体,主要的两个成员变量first和second,分别存储两个数据, 因为是使用struct不是class,所以可以直接使用pair的成员变量。

pair类型定义在#include 头文件中,也可以使用std命名空间引入对组std::pair

定义如下:
类模板:template<class T1,class T2> struct pair
T1是第一个值的数据类型,T2是第二个值的数据类型。
功能:pair将一对值(T1和T2)组合成一个值,
这一对值可以具有不同的数据类型(T1和T2),
两个值可以分别用pair的两个成员first和second访问。

	pair<string, int>p(string("Tom"), 100);cout << "姓名" << p.first << endl;cout << "年龄" << p.second << endl;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网选择题刷题记录之C++

数据结构 顺序表 在一个长度为n的顺序表的任意位置插入一个新元素的渐进时间复杂度为&#xff08;&#xff09; A. O&#xff08;n&#xff09; B. O&#xff08;n/2&#xff09; C. O&#xff08;1&#xff09; D. O&#xff08;n的平方&#xff09; 答案&#xff1a; A 解析…

[剑指offer 24] 反转链表

题目复习反转链表 字节面试的一道面试考题。属于简单题&#xff0c;毕竟复杂的面试也不好判题对吧&#xff08;狗头&#xff09; 思路 思路不难&#xff0c;首先我们观察链表&#xff0c;一般链表指的都是单向链表 struct ListNode {int val;struct ListNode *next; };那么…

[剑指offer 27][LeetCode234] 回文链表

偷偷刷题记录 回文链表 思路 思路1. 处理链表最粗暴的方式就是拷贝到数组中。考试时候也是&#xff0c;只要不会超内存&#xff0c;完全这么办 思路2. 快慢指针。因为我们判断是不是回文链表&#xff0c;回文的特性就是以中为界&#xff0c;两头对称。由于我们不能像使用数组…

牛客网选择题刷题记录之Linux系统

linux运维 linux指令 下面有关linux查看系统负载的命令&#xff0c;说法错误的是&#xff1f; A. uptime命令主要用于获取主机运行时间和查询linux系统负载等信息 B. vmstat命令可以查看查看cpu负载 C. sar -n命令可以查看网络接口信息 D. free命令可以查看磁盘负载情况 答案&…

Keil_uvision_4基本使用教程

前言&#xff1a; keil uvision 5 和 4 使用方式差不多 Keil_uvision_4基本使用教程 Keil C51 V9.00 即09年发布的最新版本uVision 4&#xff0c;版本外观改变比较大 可以使用以前的注册文件如果全新安装&#xff0c;在VISTA或者WIN 7系统下…

MySQL语法看这一篇就够啦

MySQL语法看这一篇就够啦1. MySQL介绍与登录1.1 MySQL介绍1.2 Mariadb安装与启动1.2.1 在centos7环境下安装启动登录数据库操作部分增删改查&#xff1a;增 CREATE DATABASE增删改查&#xff1a;删 DROP增删改查&#xff1a;查找数据库 SHOW DATABASE使用数据库&#xff1a;use…

Python数据库:嵌入式MySQL

Python数据库&#xff1a;嵌入式MySQLPython访问MySQL的库函数PyMySQL安装PyMySQL快速上手以及代码上下文PyMySQL常见语法1. 导包2.连接数据库 connect3. 创建访问对象 cursor4. 下达命令 cursor.execute5. 接收结果 cursor.fetch*6.事务的用法7. 关闭mysql链接 closePython访问…

部门名称部门结构叠用_金属结构分公司三部门联合开展工会小组活动

为丰富职工的业余生活&#xff0c;营造轻松欢乐的氛围&#xff0c;增强部门间交流沟通&#xff0c;舒缓职工工作压力&#xff0c;在金属结构分公司工会的支持下&#xff0c;9月12日&#xff0c;分公司工程管理部、安全监管部和综合办公室联合开展工会小组活动&#xff0c;分公司…

linux环境下安装Java运行Java

Linux环境下安装与运行Java一. Linux环境下安装Java环境——最最最简单粗暴的教程二. Linux下编译Java代码---javac和java命令的使用2.1 编译单个java文件2.2 编译多个Java文件&#xff0c;每个类都在一个包中2.3 不同包编译一. Linux环境下安装Java环境——最最最简单粗暴的教…

不是区块链的特征_上市公司日照港物流区块链平台上线,不是谁都能玩“区块链+物流”?...

免责声明&#xff1a;本文旨在传递更多市场信息&#xff0c;不构成任何投资建议。文章仅代表作者观点&#xff0c;不代表火星财经官方立场。小编&#xff1a;记得关注哦投资区块链&#xff0c;猛戳&#xff1a;火星财经App下载来源&#xff1a;火星一线文 | 成文厚火星财经APP(…

lg手机历史机型_华为后,又一中国芯崛起!国际手机巨头LG都采用它的芯片了...

众所周知&#xff0c;这几年芯片火热&#xff0c;中国芯片厂商们也是受到了大家空前的关注。任何有关于中国芯的利好&#xff0c;都会被放大&#xff0c;被网友们看好。当然&#xff0c;华为是中国这些芯片企业中最强的&#xff0c;5G芯片华为也是目前最领先的&#xff0c;像巴…

Python学习笔记(6): 如何消除字符串前后中间的空白

Python如何消除字符串前后中间的空白 &#xff08;这里不使用正则表达式非常适合小白&#xff09; 相信这是很多人都会遇到的一个小问题。其实要是只想消除前后的空白。我们知道在C/C语言中只需要将字符串数组进行遍历&#xff0c;遇到非字母的值直接剔除即可。那么python要怎…

python转义引号的作用_python传到前端的数据,双引号被转义的问题

python部分def mallTemplateConfig(request):gameRole_edit request.session.get(gameRole_edit, []) #获取json串return render(request, "operationGL/mallTemplateConfig.html",{gameRole_edit: json.dumps(gameRole_edit)})html部分这样写显示正常&#xff0c;没…

Java学习资料汇总

Java语言特点和常见错误1 Java语言特点总结1.1 语言特点1.2 运行机制1.3 JVM虚拟机1.4 JRE运行环境1.5 JDK开发环境Linux下的java安装,编译,运行三大引用类型1 Java语言特点总结 这段内容来自北大唐教授的教案 1.1 语言特点 • 无直接指针操作 • 自动内存管理 • 数据类型长…

任意python版本下载,所有python版本下载的FTP路径

python的官网一般只会给出一些最常用的和最近最新发布的python版本&#xff0c;那么如何去下载任意的python版本呢。 python版本的存储是一个ftp路径&#xff0c;我们输入如下网站&#xff0c;就可以找到所有的python版本。 https://www.python.org/ftp/python

埃斯顿机器人 王杰高_埃斯顿自动化王杰高博士受邀赴韩参加“ROBOT WORLD 2016”等一系列相关活动...

10月12-13日&#xff0c;2016韩国机器人世界展览会(“ROBOT WORLD 2016”)在韩国KINTEX(一山)隆重举行。该展会由韩国机器人产业协会主办&#xff0c;是规模最为盛大的三大国际机器人展会之一。同期&#xff0c;由中国机器人产业联盟(CRIA)与韩国机器人产业协会(KAR)共同主办的…

windows环境下安装多个任意版本的python环境

windows环境下安装多个任意版本的python环境windows环境下安装多个任意版本的python环境下载Python下载pipstep1. 用get-pip下载pipstep2. 分析安装的文件step3. 使用pip得到报错" No module named pip "step4. 原因分析和解决方案其他报错1. ERROR: Could not find …

cdh 简介_CDH 1、CDH简介

1、Apache Hadoop 不足之处• 版本管理混乱• 部署过程繁琐、升级过程复杂• 兼容性差• 安全性低2、Hadoop 发行版• Apache Hadoop• Cloudera’s Distribution Including Apache Hadoop(CDH)• Hortonworks Data Platform (HDP)• MapR• EMR• …3、CDH能解决哪些问题• 10…

Windows环境下用python嵌入式环境跑程序可太方便了

Windows环境下用python嵌入式环境跑程序可太方便了1. 嵌入式包默认的文件夹设置2. 建立python环境文件夹3. 添加python索引包路径4. 安装pip和requirements5. 运行环境6. 完整的powershell install.bat 脚本之前觉得windows电脑安装的python环境太乱太不纯净&#xff0c;或者临…

python 列表 笛卡尔积_python-列表字典的笛卡尔积

python-列表字典的笛卡尔积我正在尝试编写一些代码来测试一堆输入参数的笛卡尔积。我看过itertools&#xff0c;但是它的product功能并不是我想要的。 是否有一种简单明了的简单方法来制作一个字典&#xff0c;每个字典中有任意数量的键和任意数量的元素&#xff0c;然后生成具…