通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。
来源:互联网 发布:最小公约数算法 编辑:程序博客网 时间:2024/04/29 17:36
这是华为2013的一个机试题,会好半天才想出来,用了三个for循环,可能有点繁琐,但只要慢慢看还是好理解的,
题目:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
#include<stdio.h>#include<string.h>void main(){char a[]="abacacde";int length=strlen(a);//首先求长度for(int i=0;a[i]!='\0';i++) //先确定要一个字符{for(int j=i+1;j<length;j++) //检索当前位置的值和后面的所以值进行检索{if(a[i]==a[j]) //确定一个值后与整个字符串每一个字符进行比较{for(int k=0;k<length-j;k++)//移动删除j位置的值{a[j+k]=a[j+k+1];}length--;//删除一个后长度减一j=j-1; //退回到j开始的位置,因为跳出if后j会自加一次,所以要先减1}}}printf("%s\n",a);}
经过网友的好心指导,下来又认真的想了下这个算法确实要高效很多
#include <stdio.h> #include<stdlib.h> #include<string.h>void string(const char *str, long length, char *t_str) { int arr[26]={0}; //计数器 char ret; int j=0; for(int i=0;i<length;i++) { ret =str[i]-'a'; if(arr[ret]==0) { t_str[j++] =str[i];arr[ret]=1; } } t_str[j] = '\0'; } void main() { char *str = "abcccbbbdgf"; int length = strlen(str); char * ret = (char *)malloc((length+1)*sizeof(char)); string(str,length,ret); printf("ret=%s\n",ret); free(ret); ret = NULL; }
0 1
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 要求实现函
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- 通过键盘输入一串字母(a~z,A~Z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- 华为:编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉
- 编写一个字符串(a~z)过滤函数,对于字形符串中出现的多个相同的字形符,将非首次出现的字符过滤掉
- 过滤字符串(若字符串中出现多个相同的字符,将非首次出现的字符过滤掉)
- 字符串中出现多个相同的字符,将非首次出现的字符过滤掉
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc
- 华为上机笔试之通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 过滤字符串中非首次出现的字母
- sys.exc_info()获取异常
- 如何使用latex排版并排放置两张图
- sys.path导入外部模块
- 数据结构面试题总结7——数组:最大连续子段和、最大连续子段积
- 正则表达式
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。
- poj1004
- leetcode | Permutation Sequence
- sys.stdout
- 最后一个被删除的元素
- show table status like 'table'\G 详细信息介绍
- sscanf/sprintf 用法
- threading 多线程
- ubuntu下文件压缩/解压缩命令总结