一. 题目描述
Write a function that takes a string as input and returns the string reversed.
Example:
Given s = "hello"
, return "olleh"
.
二. 题目分析
题目大意是,编写一个函数,输入为一字符串,返回反序的字符串。如输入s = “hello”,返回”olleh”。
这是一道水题,但是可以用很多种方法去解决,对于开阔思路很有帮助,也可以练练多种基本的数据结构。使用异或、现成的reserve函数、栈、双向队列、swap反转均可以完成。
三. 示例代码
// 双向队列
class Solution {
public:
string reverseString(string s) {
deque<char> temp;
for (int i = 0; i < s.size(); ++i)
{
temp.push_back(s[i]);
}
for (int i = 0; i < s.size(); ++i)
{
s[i] = temp.back();
temp.pop_back();
}
return s;
}
};
// 使用栈
class Solution {
public:
string reverseString(string s) {
stack<char> temp;
for (int i = 0; i < s.size(); ++i)
{
temp.push(s[i]);
}
for (int i = 0; i < s.size(); ++i)
{
s[i] = temp.top();
temp.pop();
}
return s;
}
};
// swap()
class Solution {
public:
string reverseString(string s) {
int n = s.size();
for (int i = 0, j = n - 1; i < j; ++i, --j)
{
swap(s[i], s[j]);
}
return s;
}
};
// 异或
class Solution {
public:
string reverseString(string s) {
int n = s.size();
for (int i = 0, j = n - 1; i < j; ++i, --j)
{
if (s[i] != s[j])
{
s[i] = s[i] ^ s[j];
s[j] = s[i] ^ s[j];
s[i] = s[i] ^ s[j];
}
}
return s;
}
};
四. 小结
这道题纯粹是练练思路。。。