一、字符串相加
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 <iostream> 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; } };