反转字符串
题目描述
解题思路:
思路一:直接利用reverse方法逆置数组就可以了
class Solution
{
public:
void reverseString(vector<char>& s)
{
reverse(s.begin(),s.end());
}
};
思路二:利用交换的思路
class Solution {
public:
void reverseString(vector<char>& s)
{
int left=0;
int right=s.size()-1;
while(left<=right)
{
char temp=s[left];
s[left]=s[right];
s[right]=temp;
left++;
right--;
}
}
};
思路三:同样的交换思路:
class Solution {
public:
void reverseString(vector<char>& s)
{
int n=s.size();
for(int i=0;i<n/2;i++)
{
int j=n-i-1;
char temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
};
反转字符串中单词的序列
题目描述:
解题思路:
nowcode
class Solution {
public:
string ReverseSentence(string str) {
int len = str.length();
if(len == 0)
return "";
int begin=0;
int end=0;
Reverse(str,0,len-1);
begin=end=0;
while(str[begin]!='\0')
{
if(str[begin]==' ')
{
begin++;
end++;
}
else if(str[end]==' '||str[end]=='\0')
{
Reverse(str,begin,--end);
begin=++end;
}
else
end++;
}
return str;
}
void Reverse(string &str,int begin,int end)
{
while(begin < end)
{
swap(str[begin++],str[end--]);
}
}
};
测试用例
- 功能测试:句子中有多个单词,句子中只有一个单词
- 特殊输入测试:字符指针为空指针,字符串的内容为空,字符串中只有空格