字符串
字符串问题
梅杏柿
这个作者很懒,什么都没留下…
展开
-
Leetcode 第22题 括号生成C++解法
回溯递归大法好!首先分析了每个左括号出现的位置,设置初始的序列都是’)’,只要正确找到’(‘的位置,然后回溯即可。设第i个’(‘位置出现的位置为j。那么第i+1个’('的位置变化范围为**[j+1,2*i-1**);初始i和j都是0,我们按i=0为第一个括号位置class Solution {public: vector<string> res; void generate(int i,string &s,int &n,int j){原创 2021-03-09 09:46:55 · 129 阅读 · 0 评论 -
Leetcode 第1047题 删除字符串中的所有相邻重复项 C++解法
事实说明,自己对STL的运用还是不熟class Solution {public: string removeDuplicates(string S) { S="0"+S+"1"; //cout<<S; vector<char> v_s(S.begin(),S.end()); int i=1; auto it=v_s.begin()+i; while((*it)!='1'){原创 2021-03-09 08:09:31 · 162 阅读 · 0 评论 -
Leetcode第131题 分割回文串 C++解法
回溯,记忆化回文字符串class Solution {public: vector<vector<string>> res; //建立回文串的备忘录 vector<vector<int>> memo; //确认是否回文 bool isstring(string &s,int &i,int &j){ if(memo[i][j]!=-1) return m原创 2021-03-07 11:09:21 · 166 阅读 · 0 评论 -
Leetcode第514题 自由之路C++解法
先递归吧。果不其然,字符串的时候就超时了。毕竟是指数级。class Solution {public: int findDis(string& ring,int pos,string& key,int pmove) { int m=ring.size(),n=key.size(); if(pmove==n) return 0; if(ring[pos]==key[pmove])原创 2021-02-22 13:02:06 · 128 阅读 · 1 评论 -
Leetcode第1312题 让字符串成为回文串的最少插入次数C++解法
刚做过编辑距离的,我就想直接复制一个反转字符串,然后这两个字符串相同,前几个还可以的,但是到“leetcode”这个时,就不行了。仔细想这两个问题还是不等价,72题中的编辑距离中的操作包括更改操作,但是本题中的操作只有插入,所以果然不行。然后我又想从两边向中间靠拢,leetcode倒是通过了,第18个案例"zjveiiwvc"就通不过了class Solution {public: int minInsertions(string s) { int n=s.size();原创 2021-02-21 19:42:42 · 286 阅读 · 0 评论 -
Leetcode第5题 最长回文子串C++解法
没动态规划出来,就做不出来……class Solution {public: string longestPalindrome(string s) { int n=s.size(); if(n<2) return s; int dp[n][n],pos=0,len=1; memset(dp,0,sizeof(dp)); for(int i=1;i<n;++i) {原创 2021-02-20 10:14:03 · 158 阅读 · 0 评论