一、字符串反转:把字符串倒过来
1、用双指针法,左指针在开头,右指针在结尾,然后用循环交换两指针指向的字符,左指针右移,右指针左移,只至两指针相遇,循环结束。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
int left=0,right=s.size()-1;//分别指向第一个元素的位置和最后一个元素的位置
while(right>left){
swap(s[left],s[right]);//交换两个元素
left++;
right--;
}
cout<<s;
return 0;
}2、用c++中的反转reverse(s.begin(),s.end())函数。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
reverse(s.begin(),s.end());
cout<<s;
return 0;
}二、字符串去重:删掉重复的字符串
1、用bool数组来记录字符有没有出现过,如果这个字符没有出现过,就加到结果里,并且标记为“已出现”,如果这个字符出现过,就直接跳过。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
bool exist[256]={false};//定义bool数组exist,大小为256,初始值全为false
char c;
string res;
for(int i=0;i<s.size();i++){
c=s[i];
int num=c;//把字符c转换成对应的ascii码
//如果这个字符第一回出现就往下运行
if(!exist[num]){
res=res+c;
exist[num]=true;//标记字符已经出现,下回直接跳过
}
}
cout<<res;
return 0;
}2、排序后删除重复元素
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
sort(s.begin(),s.end());
auto last=unique(s.begin(),s.end());//指针指向被挪走的重复元素的开头
s.erase(last,s.end());//删除后面的重复元素
cout<<s;
return 0;
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论