营销网站都有哪些,自己动手的网站,建设工程造价员网站,手机网站主页推荐昨日刷题#xff0c;今日补发
解题思路
中间扩展#xff0c;遍历数组#xff0c;以每一项为中心#xff0c;或以每两项为中心#xff0c;向外拓展。
学习一下pair概念#xff0c;还有string的substr的用法 以下是leetcode第五题
C做法
class Solution {
public:pair…昨日刷题今日补发
解题思路
中间扩展遍历数组以每一项为中心或以每两项为中心向外拓展。
学习一下pair概念还有string的substr的用法 以下是leetcode第五题
C做法
class Solution {
public:pairint, 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
定义如下 类模板templateclass T1,class T2 struct pair T1是第一个值的数据类型T2是第二个值的数据类型。 功能pair将一对值(T1和T2)组合成一个值 这一对值可以具有不同的数据类型T1和T2 两个值可以分别用pair的两个成员first和second访问。 pairstring, intp(string(Tom), 100);cout 姓名 p.first endl;cout 年龄 p.second endl;