博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++题目--合并字符串
阅读量:3899 次
发布时间:2019-05-23

本文共 1064 字,大约阅读时间需要 3 分钟。

【问题描述】

从键盘输入两个有序字符串(其中字符按ASCII码从小到大排序,并且不含重复字符),将两字符串合并,要求合并后的字符串仍是有序的,并且重复字符只出现一次,最后输出合并后的结果。

【输入形式】

分行从键盘输入两个有序字符串(每个字符串不超过50个字符)

【输出形式】

输出合并后的有序字符串

【输入样例】

abcdeg

bdfh

【输出样例】

abcdefgh

【样例说明】

输入两个有序字符串abcdegbdfh,输出合并后的有序字符串为abcdefgh


对于这道题我的思路是:利用两个库函数:sort()unique(),先排序,再去重,用unique()拿到排序后的去重后的第一个重复数据的下标,将前面的不重复数据输出即可

对于sort()unique() 不熟悉的,可以参考文章:

sort():
unique():

首先需要储备一些必要的知识:

  • c_str()
  • 复制字符串的函数:strcpy()

我的代码实现如下:

#include 
#include
#include
#include
using namespace std;int main(){ int i; string s1; string s2; cin >> s1; cin >> s2; // 字符串连接 s1 += s2; // 储存连接后的字符串长度 const int length = s1.size(); // 对字符串排序 sort(s1.begin(), s1.end()); // 这两行代码可以用下面注释掉的代码代替,但不推荐 // 将C++风格的字符串s1,转换为C风格的字符串,并存入数组t char t[length]; strcpy(t, s1.c_str()); // const char* p = s1.c_str();// for (i = 0; i < length; i++)// t[i] = p[i]; // 去重,拿到第一个重复数据的下标 int n = unique(t, t + length) - t; // 将前面不重复的数据输出 for (i = 0; i < n; i++) cout << t[i]; return 0;}

以上 ?

转载地址:http://bvden.baihongyu.com/

你可能感兴趣的文章
php面试题3-yii2和yii的不一样的地方
查看>>
IOS 一些好的框架和 技术大牛的博客
查看>>
Java 和 Object-c的区别
查看>>
Windows环境下Android NDK环境搭建
查看>>
NDK Build 用法(NDK Build)
查看>>
Android NDK开发起步Hello Jni
查看>>
[已解决]AutoCompleteTextView 不显示匹配的内容,因为将空的内容添加进去了
查看>>
object c的浅拷贝(地址拷贝)和深拷贝(对象拷贝)
查看>>
object c son字符串的解析
查看>>
object c 非常强大的类的属性复制kcv键值码赋值
查看>>
Java中普通代码块,构造代码块,静态代码块区别及代码示例
查看>>
iOS 第4课 UILabel
查看>>
[已解决]junit.framework.AssertionFailedError: No tests found in
查看>>
“服务器端跳转”和“客户端跳转”的区别
查看>>
Datatables基本初始化——jQuery表格插件
查看>>
Servlet监听器——实现在线登录人数统计小例子
查看>>
Oracle笔记——简单查询语句 Oracle入门
查看>>
基于Hibernate和Struts2的用户管理系统小案例
查看>>
打开.class文件的方法
查看>>
基于windows平台Git+GitHub+Hexo搭建个人博客(一)
查看>>