C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++字符串的反转与去重

C++中字符串的反转与去重实现方式

作者:2601_95612197

本文介绍了两种字符串反转方法:双指针法和reverse()函数,同时给出了字符串去重的两种方法:使用bool数组记录字符出现情况和先排序再删除重复元素,这些都是编程中的常用操作

一、字符串反转:把字符串倒过来

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;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文