删除重复字符
2023-12-30 12:28:56
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C程序如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[81];
gets(a);//输入这个字符串
int n = strlen(a);
for(int i = 1; i <= n - 1; i++)//先对字符串进行排序,冒泡排序
{
for(int j = 0; j < n - i; j++)
{
if(a[j] > a[j + 1])//a[j]和a[j+1]对应的是字符的ASCLL码值
{
char temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
char *p = a;//指向非重复字符,若是重复字符就跳过
char *left = a, *right = a;
//定义两个指针,分别指向a中的第一个元素
while(*right != '\0')//遍历这个字符串
{//为什么是right不等于‘\0’呢,因为right先向右指
while(*left == *right)//比较这个字符与下一个字符是否相等
{
right ++;//跳过相同的字符
}
*p++ = *left;//p指向字符不相同的数,随后加一指向下一个字符
left = right;//left指向非重复字符
}//此方法是在原字符串的基础上进行删除的,改变了原字符串
*p = '\0';//别忘了最后加一个‘\0’,字符串都是以‘\0’为结尾的
printf("%s", a);
return 0;
}
文章来源:https://blog.csdn.net/2302_80325489/article/details/135303839
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!