代码随想录--字符串
344. 反转字符串
https://leetcode.cn/problems/reverse-string/
class Solution {
public:
void reverseString(vector<char>& s) {
int size = s.size();
for(int j = size-1, i = 0; i < size/2; j--, i++)
{
swap(s[i],s[j]);
}
}
};
541. 反转字符串Ⅱ
https://leetcode.cn/problems/reverse-string-ii/
class Solution {
public:
string reverseStr(string s, int k) {
for(int i = 0; i < s.size(); i += 2*k)
{
if(i + k <= s.size())
reverse(s.begin()+i, s.begin()+i+k);
else
reverse(s.begin()+i, s.end());
}
return s;
}
};
151. 反转字符串中的单词
https://leetcode.cn/problems/reverse-words-in-a-string/submissions/489714833/
class Solution {
public:
string reverseWords(string s) {
int slow = 0;
for(int fast = 0; fast < s.size(); fast++)
{
if(s[fast]!=' ')
{
if(slow!=0) s[slow++] = ' '; // 单词间加空格
while(fast<s.size()&&s[fast]!=' ')
s[slow++] = s[fast++];
}
}
s.resize(slow);
//现在已经去掉多余空格了
//先整体反转,再每个单词反转回来
reverse(s.begin(),s.end());
auto start = s.begin();
for(int i = 0; i <= s.size(); i++)
{
if(i==s.size() || s[i] == ' ')
{
reverse(start, s.begin()+i);
start = s.begin() + i + 1;
}
}
return s;
}
};
找出字符串第一个匹配项的下标
class Solution {
public:
int strStr(string haystack, string needle) {
int len = needle.size();
if(len==0) return 0;
//找next数组
int next[len];
int j = 0;
next[0] = 0;
for(int i = 1; i < len; i++)
{
//这个要放在前面,比如acad acac,卡d卡不上,j往前跳一下ac就能卡上了
//这里不可以j=0,因为第一次测试的串只有俩字母比如ac,就直接next[1]=0就好
while(needle[i]!=needle[j] && j>0)
j = next[j-1];
//needle串是abcd abce
if(needle[i]==needle[j])
++j;
next[i] = j;
}
j = 0;
//这里i=0表示卡到文本串的开头
for(int i = 0; i < haystack.size(); i++)
{
while(haystack[i]!=needle[j] && j>0)
j = next[j-1];
if(haystack[i]==needle[j])
++j;
if (j == needle.size())
return (i - needle.size() + 1);
}
return -1;
}
};
重复的子字符串
https://leetcode.cn/problems/repeated-substring-pattern/
class Solution {
public:
bool repeatedSubstringPattern(string s) {
string t = s + s;
t.erase(t.begin());
t.erase(t.end()-1);
if(t.find(s)!=string::npos)
return true;
return false;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现