今天趁着编程的热情还在,又找了一道不难的题刷了下,感觉还好。
具体题目如下:
Write a function that takes a string as input and returns the string reversed.
Example 1:
Input: "hello"
Output: "olleh"
Example 2:
Input: "A man, a plan, a canal: Panama"
Output: "amanaP :lanac a ,nalp a ,nam A"
题意分析:
给定一个字符串,将其进行翻转。
解答如下:
方法一(对撞指针法)
用两个指针分别指向字符串的左右两端,让它们齐头并进的同时并交换对应位置的元素,进而达到对字符串进行翻转的目的。
class Solution {
public:
string reverseString(string s) {
int l = 0;
int r = (int)s.size()-1;
while( l < r ){
swap(s[l++],s[r--]);
}
return s;//返回函数一定是在对应函数内部
}
};
提交后的结果如下:
方法二(不使用swap函数)
使用中间变量temp进行交换,此时要注意中间变量和索引是两码事,因为是要交换字符元素,所以要定义字符型的中间变量,且不能直接赋值为0,而是'0'。
class Solution {
public:
string reverseString(string s) {
int l = 0;
int r = (int)s.size()-1;
char temp = s[l];
while( l < r ){
temp = s[l];
s[l] = s[r];
s[r] = temp;
l++;
r--;
}
return s;
}
};
提交后的结果如下:
方法三(不使用两个指针)
使用for循环,用i < s.size()/2来控制循环次数,用中间变量或者swap来交换前后元素。
class Solution {
public:
string reverseString(string s) {
char temp = '0';
for (int i = 0; i < s.size()/2; i++)
{temp = s[i];
s[i] = s[s.size()-1-i];
s[s.size()-1-i] = temp;}
return s;
}
};
提交后的结果如下:
日积月累,与君共进,增增小结,未完待续。