北尘_:个人主页
个人专栏:《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》
☀️走在路上,不忘来时的初心
文章目录
- 一、字符串相加
-
- 二、仅仅反转字母
-
- 三、字符串中第一个唯一字符
-
- 四、字符串最后一个单词的长度
-
- 五、验证回文串
-
一、字符串相加
1、题目讲解
2、思路讲解
3、代码实现
class Solution {
public:
string addStrings(string num1, string num2) {
int end1=num1.size()-1,end2=num2.size()-1;
int next=0;
string m;
while(end1>=0 || end2>=0 )
{
int v1=0,v2=0;
if(end1>=0)
v1=num1[end1--]-'0';
if(end2>=0)
v2=num2[end2--]-'0';
int ret=v1+v2+next;
next=ret/10;
ret%=10;
m+=ret+'0';
}
if(next==1)
m+='1';
reverse(m.begin(),m.end());
return m;
}
};
二、仅仅反转字母
1、题目讲解
2、思路讲解
3、代码实现
class Solution {
public:
bool letter(char ch)
{
if(ch>='a' && ch<='z') return true;
if(ch>='A' && ch<='Z') return true;
else return false;
}
string reverseOnlyLetters(string s) {
int end=s.size()-1,begin=0;
while(begin<end)
{
while(begin<end && !letter(s[end]))
{
--end;
}
while(begin<end && !letter(s[begin]))
{
++begin;
}
swap(s[begin++],s[end--]);
}
return s;
}
};
三、字符串中第一个唯一字符
1、题目讲解
2、思路讲解
3、代码实现
class Solution {
public:
int firstUniqChar(string s) {
int count[256]={0};
int size=s.size();
for(int i=0;i<size;i++)
{
count[s[i]]++;
}
int n=-1;
for(int i=0;i<size;i++)
{
if(count[s[i]]==1)
{
n=i;
break;
}
}
return n;
}
};
四、字符串最后一个单词的长度
1、题目讲解
2、思路讲解
3、代码实现
#include
using namespace std;
int main()
{
string s1;
getline(cin,s1);
int i=s1.rfind(' ');
if(i!=string::npos)
cout<<s1.size()-(i+1)<<endl;
else
cout<<s1.size();
return 0;
}
五、验证回文串
1、题目讲解
2、思路讲解
3、代码实现
class Solution {
public:
bool isPalindrome(string s) {
int n=s.size();
string s1;
for(int i=0;i<n;i++)
{
if(s[i]>='a' && s[i]<='z')
s1+=s[i];
else if(s[i]>='A' && s[i]<='Z')
s1+=s[i]+32;
else if(s[i]>='0' && s[i]<='9')
s1+=s[i];
}
int end=s1.size();
for(int i=0;i<end/2;i++)
{
if(s1[i]!=s1[end-i-1])
{
return false;
}
}
return true;
}
};