题目描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000) 题目来源
输入描述
输入一行,即一个只包含小写字母的字符串。
输出描述
输出该字符串反转后的字符串。
示例
输入:abcd
输出:dcba
思路
法1:双指针法 准备两个指针,从字符串首尾同时出发,每次交换二者指向的字符,直到二者相遇,交换,最终完成反转。(用到了交换函数swap(a,b))
法2:反转函数法 调用algorithm库中的反转函数reverse(),可以直接对字符串反转,然后输出。
具体实现
法1:双指针法
#include<iostream>
using namespace std;
int main(){
string a;
cin>>a;
int left = 0; //定义双指针
int right = a.length()-1;
while(left<right){
swap(a[left],a[right]); //反转
left++;
right--;
}
cout<<a;
}
法2:反转函数法
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
string a;
cin >> a;
reverse(a.begin(),a.end()); //reverse函数,对字符串反转
cout << a;
}
时间复杂度
法1:双指针法 时间复杂度为O(N),N为字符串长度
法2:反转函数法 时间复杂度为O(N),N为字符串长度
小结
- begin和end函数:
-
begin和end是容器的两个成员函数,所有标准库容器都可以使用迭代器,虽然string类型不属于容器类型,但string支持很多与容器类似的操作。
-
begin():返回指向容器第一个元素的迭代器。
-
end():返回指向容器最后一个元素下一个位置的迭代器。
-
- algorithm头文件是C++的标准算法库,主要应用在容器上,常用函数如下:
-
max(a,b):求两个数最大值。
-
min(a,b):求两数最小值。
-
abs(a):求一个数绝对值。
-
swap(x,y):交换函数,用来交换x和y值。
-
reverse(a,b):翻转函数,翻转x-y区间的数组、容器的值。(若想对容器中所有数进行翻转,则需要用到begin(),end()函数)。
-
sort(x,y):排序数组,对x-y区间的数组、容器进行排序,默认升序。(若想将数组降序排序,就需要写一个自定义函数,改变默认的排序功能,然后在调用sort函数时加上自定义函数,即sort(a,a+5,cmp) )。
-
count(x,y,4):在数组中查找4在x-y区间中出现的次数。
-
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情