一、字符串之反转
1.344 反转字符串
- 反转字符串:
-
reverse(str.begin(), str.end());
- 反转数组:
-
int a[5] = {1, 2, 3, 4, 5};
reverse(a, a+5);//n为数组中的元素个数这题的本意当然是不用库函数,怎么做:双指针思想
class Solution {
public:
void reverseString(vector<char>& s)
{
int length=s.size();
for(int i=0,j=length-1;i<length/2;i++,j--)
{
swap(s[i],s[j]);
}
}
};
总结:
- 字符串的长度:s.length();
- 字符数组的长度:s.size();
- 利用string头文件中的strlen()函数:strlen(str)
- C++的strlen(str)和str.length()和str.size()都可以求字符串长度。其中str.length()和str.size()是用于求string类对象的成员函数,strlen(str)是用于求字符数组的长度,其参数是char*。
- 这题里面的str是放在了vector字符数组里面,所以用size();
2.541 反转字符串 II
难度:简单
class Solution {
public:
string reverseStr(string s, int k)
{
int length=s.length();
for(int j=0;j<length;j+=(2*k))//j=0,2k,4k....
{
if(length-j<k)//如果剩余字符少于 k 个,则将剩余字符全部反转。
{
reverse(s.begin()+j,s.end());
}
else if((length-j<2*k)&&(length-j>=k)