
C++
山水有相逢0316
这个作者很懒,什么都没留下…
展开
-
LeetCode 5. 最长回文子串
class Solution {public: string longestPalindrome(string s) { string res; for(int i = 0 ; i < s.size() ; i ++) { // 模拟字符串长度为 奇数 的时候 int l = i - 1, r = i + 1; while(l >= 0 && r &l转载 2021-05-14 21:25:15 · 93 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串
class Solution {public: int lengthOfLongestSubstring(string s) { // AcWing基础课 双指针模板题 unordered_map<char, int> hash; int res = 0; for(int i = 0, j = 0 ; i < s.size() ; i ++) { hash[s[i]] ++ ;原创 2021-05-14 21:23:40 · 93 阅读 · 0 评论 -
LeetCode 2. 两数相加
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next)原创 2021-05-14 21:22:41 · 64 阅读 · 0 评论 -
LeetCode 1. 两数之和
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { //暴力是O(n²), 最好用哈希优化到O(n) unordered_map<int, int> hash; for(int i = 0 ; i < nums.size() ; i ++) { //哈希表的count函数返回原创 2021-05-14 21:20:37 · 88 阅读 · 0 评论 -
797. 差分
797. 差分输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列。接下来m行,每行包含三个整数l,r,c,表示一个操作。输出格式共一行,包含n个整数,表示最终序列。数据范围1≤n,m≤100000,1≤l≤r≤n,−1000≤c≤1000,−1000≤整数序列中元素的值≤1000输入样例:6 31 2原创 2021-01-21 14:41:41 · 108 阅读 · 0 评论 -
776. 字符串移位包含问题
776. 字符串移位包含问题对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。输入格式共一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30。输出格式如果一个字符串是另一字符串通过若干次循环原创 2021-01-13 19:13:20 · 237 阅读 · 0 评论 -
778. 字符串最大跨距
778. 字符串最大跨距有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10。现在,我们想要检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。计算满足上述条件的最大跨距(即,最大间隔距离:最右边的S2的起始点与最左边的S1的终止点之间的字符数目)。如果没有满足条件的S1,S2存在,则输出-1。例如,S = “abcd123ab888efghij45ef67kl”, S1=”ab”, S2=”ef”,其中原创 2021-01-13 19:09:33 · 206 阅读 · 0 评论 -
775. 倒排单词
775. 倒排单词编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。输入格式输入为一个字符串(字符串长度至多为100)。输出格式输出为按要求排序后的字符串。输入样例:I am a student输出样例:student a am I#include<iostream>using namespace std;int main(){ string s[110]; int n = 0;原创 2021-01-07 23:54:41 · 250 阅读 · 0 评论 -
770. 单词替换
770. 单词替换输入一个字符串,以回车结束(字符串长度不超过100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入格式输入共3行。第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度不超过100);第3行是a将被替换的单词b(长度不超过100)。输出格式共一行,输出将s中所有单词a替换成b之后的字符串。输入样例:You want someone to help youYouI原创 2021-01-08 00:20:01 · 148 阅读 · 0 评论 -
774. 最长单词
770. 单词替换一个以’.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。输入格式输入这个简单英文句子,长度不超过500。输出格式该句子中最长的单词。如果多于一个,则输出第一个。输入样例:I am a student of Peking University.输出样例:University#include<iostream>using namespace std;int main(){ string str,re原创 2021-01-07 23:49:45 · 220 阅读 · 0 评论 -
84. 求1+2+…+n
84. 求1+2+…+n求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。样例输入:10输出:55class Solution {public: int getSum(int n) { char a[n][n+1] return sizef(a)>>1; //定义一个数组实现(n+1)*n/2 }};class Solution {publ原创 2021-01-07 13:14:17 · 120 阅读 · 0 评论 -
818. 数组排序
818. 数组排序给定一个长度为n的数组a以及两个整数 l 和 r,请你编写一个函数,void sort(int a[], int l, int r),将a[l] ~ a[r]从小到大排序。输出排好序的数组a。输入格式第一行包含三个整数n,l,r。第二行包含n个整数,表示数组a。输出格式共一行,包含n个整数,表示排序完成后的数组a。数据范围0≤l≤r<n≤1000输入样例:5 2 44 5 1 3 2输出样例:4 5 1 2 3#include<iostrea原创 2021-01-06 18:10:56 · 423 阅读 · 0 评论 -
822. 走方格
822.走方格给定一个n*m的方格阵,沿着方格的边线走,从左上角(0,0)开始,每次只能往右或者往下走一个单位距离,问走到右下角(n,m)一共有多少种不同的走法。输入格式共一行,包含两个整数n和m。输出格式共一行,包含一个整数,表示走法数量。数据范围1≤n,m≤10输入样例:2 3输出样例:10#include<iostream>using namespace std;int n,m;int cnt=0;//纪录方案个数//画方格图,(x,y)从(0,0原创 2021-01-06 18:11:15 · 183 阅读 · 0 评论 -
823. 排列
ACWING823. 排列ACWING823. 排列给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤9输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1#include<iostream>using namespace std;const int N=10;bo原创 2021-01-06 18:11:36 · 220 阅读 · 0 评论