it编程 > 编程语言 > C/C++

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

15人参与 2026-04-26 C/C++

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

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

C++中字符串的查找与插入方式

04-26

Qt实现调用相机进行拍照并进行图像处理

04-24

C++ std::valarray 用法实例详解

04-27

C语言之整数存储底层逻辑用法解读

04-22

WPF通过 WM_COPYDATA 实现与Qt的进程间通信

04-21

基于PyQT6从零开始做一个计时器

04-29

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论