- 仅仅反转字母
https://leetcode-cn.com/problems/reverse-only-letters/
class Solution {
public:
bool Is_Az(char ch)
{
if((ch >= 'a'&& ch <= 'z') || (ch >='A' && ch <='Z'))
return false;
else
return true;
}
string reverseOnlyLetters(string s) {
int begin = 0;
int end = s.size() - 1;
while(begin < end)
{
while(begin < end && Is_Az(s[begin]) == true)//过滤不是字母的字符
{
++begin;
}
while(begin < end && Is_Az(s[end]) == true)//过滤不是字母的字符
{
--end;
}
swap(s[begin],s[end]);
begin++;
end--;
}
return s;
}
};
- 字符串中的第一个唯一字符
class Solution {
public:
int firstUniqChar(string s) {
int count[27]={0};
for(auto ch : s)
{
count[ch - 'a']++;
}
int i = 0;
for(;i<s.size();i++)
{
if(count[s[i]-'a'] ==1)
return i;
}
return -1;
}
};
字符串最后一个单词的长度
//方法一:利用逆序遍历找第一个空格
// #include<iostream>
// using namespace std;
// void length(string s)
// {
// auto rit = s.rbegin();
// int i = 0;
// while(rit != s.rend())
// {
// if(*rit != ' ')
// {
// *rit++;
// i++;
// }
// else
// break;
// }
// cout<< i <<endl;
// }
// int main()
// {
// string s;
// getline(cin,s);
// length(s);
// return 0;
// }
// #include<iostream>
// #include<string>
// using namespace std;
// int main()
// {
// string s;
// getline(cin,s);
// size_t pos = s.rfind(' ');
// cout<<s.size()-(pos+1);
// return 0;
// }
//#include <iostream>
// using namespace std;
// int main() {
// string s;
// while(cin >> s);//cin>>s 假如输入abc def ghi cin有空格就截断,后一个会覆盖前一个,最终只会输出最后一个的字符串长度
// cout << s.size();
// return 0;
// }
- 验证回文串
https://leetcode-cn.com/problems/valid-palindrome/
class Solution {
public:
void Ato_a(string& s)
{
for(auto& ch : s)
{
if(ch >='A'&&ch <= 'Z')
ch +=32;
}
}
bool Ischar_Ornum(char ch)
{
if((ch>='0'&&ch<='9')|| (ch>= 'a'&&ch <= 'z'))
return true;
else
return false;
}
bool isPalindrome(string s) {
int begin=0;
int end = s.size()-1;
Ato_a(s);
while(begin < end)
{
while(begin<end && !Ischar_Ornum(s[end]))
--end;
while(begin<end && !Ischar_Ornum(s[begin]))
++begin;
if(s[begin] != s[end])
return false;
else
{
--end;
++begin;
}
}
return true;
}
};
- 字符串相加https://leetcode-cn.com/problems/add-strings/
class Solution {
public:
string addStrings(string num1, string num2) {
string s;
int end1 = num1.size()-1;
int end2 = num2.size()-1;
int next = 0;
int val1 = 0;
int val2 = 0;
int ret =0;
while(end1 >= 0 || end2 >= 0)
{
if(end1 >= 0 )
{
val1 = num1[end1--]-'0';
}
else
{
val1 = 0;
}
if(end2 >=0)
{
val2 = num2[end2--]-'0';
}
else
{
val2 = 0;
}
ret = val1 +val2 +next;
if(ret > 9)
{
next = 1;
ret -= 10;
}
else if(ret <= 9)
{
next = 0;
}
// s+=('0'+ret);
s.insert(s.begin(),'0'+ret);
}
if(1 == next)
{
//s+=('0'+1);
s.insert(s.begin(),'1');
}
//reverse(s.begin(),s.end());
return s;
}
};
- 反转字符串 II
https://leetcode-cn.com/problems/reverse-string-ii/
// class Solution {
// public:
// string reverseStr(string s, int k) {
// int num = s.size();
// int i =0;
// for(i = 0;i < num;i += 2 * k)
// {
// if( i+k <= num)
// reverse(s.begin()+i,s.begin()+i+k);
// else
// reverse(s.begin()+i,s.begin()+num);
// }
// return s;
// }
// };
// class Solution {
// public:
// int min(int a,int b)
// {
// return a<=b?a:b;
// }
// string reverseStr(string s, int k) {
// int num =s.size();
// int i = 0;
// for(i = 0;i<num;i+=2*k)
// {
// int n = min(i+k,num);
// reverse(s.begin()+i,s.begin()+n);
// }
// return s;
// }
// };
- 反转字符串中的单词 III
// class Solution {
// public:
// string reverseWords(string s) {
// string ret;
// int length = s.length();
// int i = 0;
// while (i < length) {
// int start = i;
// while (i < length && s[i] != ' ') {
// i++;
// }
// for (int p = start; p < i; p++) {
// ret.push_back(s[start + i - 1 - p]);
// }
// while (i < length && s[i] == ' ') {
// i++;
// ret.push_back(' ');
// }
// }
// return ret;
// }
// };
// class Solution
// {
// public:
// string reverseWords(string s){
// string ret;
// int num = s.size();
// int i = 0;
// while(i<num)
// {
// int start = i;
// while(i<num && s[i] != ' ')
// {
// i++;
// }
// for(int p = start;p < i;++p)
// {
// ret.push_back(s[i-1+start-p]);
// }
// while( i<num && s[i] ==' ')
// {
// i++;
// ret.push_back(' ');
// }
// }
// return ret;
// }
// };
// class Solution {
// public:
// string reverseWords(string s) {
// int len = s.length();
// for(int i=0, b=0; i<len; ++i) {
// if(' ' == s[i] || i == len-1) {
// reverse(s.begin()+b, s.begin()+i+(i == len-1));
// b = i+1;
// }
// }
// return s;
// }
// };
class Solution {
public:
string reverseWords(string s) {
int len = s.length();
for(int i=0, b=0; i<len; ++i) {
if(' ' == s[i] )
{
reverse(s.begin()+b, s.begin()+i);
b=i+1;
}
if(i == len-1)
reverse(s.begin()+b, s.begin()+len);
}
return s;
}
};