C++中字符串的反轉與去重實現(xiàn)方式
更新時間:2026年04月26日 10:31:33 作者:2601_95612197
本文介紹了兩種字符串反轉方法:雙指針法和reverse()函數(shù),同時給出了字符串去重的兩種方法:使用bool數(shù)組記錄字符出現(xiàn)情況和先排序再刪除重復元素,這些都是編程中的常用操作
一、字符串反轉:把字符串倒過來
1、用雙指針法,左指針在開頭,右指針在結尾,然后用循環(huán)交換兩指針指向的字符,左指針右移,右指針左移,只至兩指針相遇,循環(huán)結束。
#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())函數(shù)。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
reverse(s.begin(),s.end());
cout<<s;
return 0;
}二、字符串去重:刪掉重復的字符串
1、用bool數(shù)組來記錄字符有沒有出現(xiàn)過,如果這個字符沒有出現(xiàn)過,就加到結果里,并且標記為“已出現(xiàn)”,如果這個字符出現(xiàn)過,就直接跳過。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
bool exist[256]={false};//定義bool數(shù)組exist,大小為256,初始值全為false
char c;
string res;
for(int i=0;i<s.size();i++){
c=s[i];
int num=c;//把字符c轉換成對應的ASCII碼
//如果這個字符第一回出現(xiàn)就往下運行
if(!exist[num]){
res=res+c;
exist[num]=true;//標記字符已經(jīng)出現(xiàn),下回直接跳過
}
}
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;
}總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vc中SendMessage自定義消息函數(shù)用法實例
這篇文章主要介紹了vc中SendMessage自定義消息函數(shù)用法,以實例實行詳細講述了SendMessage的定義、原理與用法,具有一定的實用價值,需要的朋友可以參考下2014-10-10
C++ for循環(huán)與nullptr的小知識點分享
這篇文章主要是來和大家介紹一些C++中的小知識點,本文分享的是for循環(huán)與nullptr,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2023-05-05
C++實現(xiàn)LeetCode(143.鏈表重排序)
這篇文章主要介紹了C++實現(xiàn)LeetCode(143.鏈表重排序),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07

