
字符串
cx_cs
这个作者很懒,什么都没留下…
展开
-
68. 文本左右对齐
无原创 2022-08-19 09:23:15 · 132 阅读 · 0 评论 -
30. 串联所有单词的子串
无原创 2022-08-18 09:56:59 · 69 阅读 · 0 评论 -
179. 最大数
要求:数组里的数拼接思路:跟剑指45题类似class Solution {public: string largestNumber(vector<int>& nums) { vector<string> ans; for(auto &num : nums) ans.push_back(to_string(num)); sort(ans.begin(), ans.end(), [](原创 2022-04-11 14:09:48 · 66 阅读 · 0 评论 -
171. Excel 表列序号
要求:A代表1,给一个字符串思路:class Solution {public: int titleToNumber(string columnTitle) { int sum=0; int n=columnTitle.length(); for(int i=0;i<n;++i){ sum=sum*26+(columnTitle[i]-'A'+1); } return sum;原创 2022-04-11 14:09:18 · 177 阅读 · 0 评论 -
125. 验证回文串
要求:包含其他字符思路:class Solution {public: bool isPalindrome(string s) { int n = s.size(); int left = 0, right = n - 1; while (left < right) { while (left < right && !isalnum(s[left])) { ++l原创 2022-04-05 11:05:50 · 128 阅读 · 0 评论 -
38. 外观数列
要求:对上一个字符串,读取连续个数思路:模拟或者打表class Solution {public: string countAndSay(int n) { string last="1"; for(int k=1;k<n;++k){ string cur; int len=last.length(); for(int i=0;i<len;){ c原创 2022-04-03 10:51:59 · 141 阅读 · 0 评论 -
28. 实现 strStr()
要求:kmp算法,服了思路:复制粘贴https://leetcode-cn.com/problems/implement-strstr/solution/shi-xian-strstr-by-leetcode-solution-ds6y/class Solution {public: int strStr(string haystack, string needle) { int n = haystack.size(), m = needle.size();原创 2022-03-26 20:45:13 · 399 阅读 · 0 评论 -
438. 找到字符串中所有字母异位词
要求:找起始下标思路:滑动窗口,击败90%class Solution {public: vector<int> findAnagrams(string s, string p) { vector<int> vp(26); for(char &c:p) vp[c-'a']++; int n=s.size(); int left=0,right=0; vecto原创 2022-03-23 21:25:31 · 181 阅读 · 0 评论 -
394. 字符串解码
要求:输入:s = “3[a2[c]]”,输出:“accaccacc”思路:本题分两种情况,遇到字母或者数字[字母,注意考虑是否在嵌套下。流水线式代码。。时间100%class Solution {public: //3[a2[c2[d]e]],栈不空的话弹出来要加栈顶 string decodeString(string s) { int n=s.length(); stack<int> si; stack<strin原创 2022-03-23 14:20:53 · 123 阅读 · 0 评论 -
76. 最小覆盖子串
要求:rt思路:滑动窗口,见注释class Solution {public: string minWindow(string s, string t) { unordered_map<char, int> hs, ht; for (auto c: t) ht[c] ++ ; string res; int cnt = 0; for (int i = 0, j = 0; i < s.size();原创 2022-03-19 13:54:57 · 91 阅读 · 0 评论 -
22. 括号生成
要求:生成匹配的括号序列思路:回溯class Solution {public: vector<string> ans; void dfs(string s,int left,int right,int& n){ if(s.size()==(n<<1)){ ans.push_back(s); return; } if(left<n)dfs(s+'(',l原创 2022-03-17 16:46:43 · 108 阅读 · 0 评论 -
5. 最长回文子串
要求:返回串思路:中心扩展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; }原创 2022-03-17 13:38:30 · 56 阅读 · 0 评论 -
剑指 Offer 67. 把字符串转换成整数
要求:rt思路:比较越界用214748364class Solution {public: int strToInt(string str) { int idx=0,n=str.length(); while(idx<n&&str[idx]==' ')++idx; int sign=1; if(idx<n&&str[idx]=='+'){ idx++;原创 2022-03-12 13:21:47 · 109 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序
要求:rt思路:class Solution {public: string reverseWords(string s) { string ans; int end=0; for(int i=s.length()-1;i>=0;){ while(i>=0&&s[i]==' ')--i; end=i; while(i>=0&&原创 2022-03-10 13:20:20 · 66 阅读 · 0 评论 -
剑指 Offer 45. 把数组排成最小的数
要求:rt思路:字符串合并用a+b<b+aclass Solution {public: string minNumber(vector<int>& nums) { vector<string> ans; for(auto &num : nums) ans.push_back(to_string(num)); sort(ans.begin(), ans.end(), [](c原创 2022-03-08 09:38:46 · 63 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列
要求:rt思路:重复的先排序后last记录class Solution {public: vector<string> ans; string tmp; vector<bool> visited; void dfs(string& s){ if(tmp.length()==s.length()){ ans.push_back(tmp); return; }原创 2022-03-06 19:20:08 · 52 阅读 · 0 评论 -
剑指 Offer 20. 表示数值的字符串
要求:太复杂了思路:复制剑指官方题解class Solution {private: bool scanInteger(const string s, int& index){ if(s[index] == '+' || s[index] == '-') ++index; return scanUnsignedInteger(s, index);//跳过符号 } bool scanUnsignedInteger(c原创 2022-03-04 12:30:35 · 50 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
要求:替换string空格思路:resize一下后插class Solution {public: string replaceSpace(string s) { int cnt=0; int n=s.length(); for(int i=0;i<n;++i){ if(s[i]==' ')++cnt; } s.resize(n+2*cnt); int j=n+2*cn原创 2022-02-28 17:17:23 · 57 阅读 · 0 评论 -
696. 计数二进制子串
要求:挺简单的思路:class Solution {public: int countBinarySubstrings(string s) { int cnt=0; for(int i=0;i<s.size();){ char pre=s[i]; int precnt=0,curcnt=0; while(i<s.size()&&s[i]==pre){原创 2022-01-20 14:10:29 · 164 阅读 · 0 评论 -
9. 回文数
要求:数思路:回文常用方法是拼接或者翻转class Solution {public: bool isPalindrome(int x) { if(x<0)return false; int xx=x; int sum=0; while(xx>=10){ sum=sum*10+xx%10; xx/=10; } return sum==x/1原创 2022-01-20 14:00:19 · 70 阅读 · 0 评论 -
647. 回文子串
要求:判断回文子串个数思路:动规,或者另一种中心扩展,从1个和2个为中心class Solution {public: int countSubstrings(string s) { int n=s.size(); vector<vector<int>> dp(n,vector<int>(n)); int num=n; for(int i=0;i<n-1;++i){原创 2022-01-20 13:49:07 · 186 阅读 · 0 评论 -
205. 同构字符串
要求:s和t双射思路:class Solution {public: bool isIsomorphic(string s, string t) { if(s.size()!=t.size())return false; unordered_map<char,char> m; unordered_map<char,char> m2; for(int i=0;i<s.size();++i){原创 2022-01-20 13:34:55 · 147 阅读 · 0 评论 -
409. 最长回文串
要求:能打乱顺序组合的最长回文思路:统计个数即可,但是,奇数次的可以不用完class Solution {public: int longestPalindrome(string s) { if(s=="")return 0; int len=0,oddnum=0; int n=s.size(); unordered_map<char,int> m; for(char c:s)原创 2022-01-20 13:25:17 · 175 阅读 · 0 评论 -
242. 有效的字母异位词
要求:每个字符出现个数是否相同,字符是unicode呢思路:unicode不写,c++难搞class Solution {public: bool isAnagram(string s, string t) { if(s.size()!=t.size())return false; int hash[26]={0}; for(char c:s) hash[c-'a']++; for(char c:t){原创 2022-01-20 11:26:54 · 164 阅读 · 0 评论