通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
2015-10-23 20:23
951 查看
不废话,直接上代码。。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxsize 20
void filter(const char*str1, int length, char* str2)
{
bool hash[26] = { 0 };
int i, j;
for (i = 0, j = 0; i < length; i++)
{
if (hash[str1[i] - 'a'] == false)
{
hash[str1[i] - 'a'] = true;
str2[j++] = str1[i];
}
str2[j] = '\0';
}
}
void zip(const char* str1, int length, char* str2)
{
int i, j, k, num;
char buff[20];
for (i = 0, k = 0; i < length; i++)
{
num = 0;
for ( j = i + 1; i < length; ++j)
{
if (str1[i] == str1[j])
num++;
else
break;
}
if (num != 0)
{
memset(buff, 0, sizeof(buff));//将buff 初始化:
_itoa_s(num + 1, buff, 10);
strcpy_s(str2+k,sizeof(str2+k), buff);
k += strlen(buff);
}
str2[k++] = str1[i];
i = i + num + 1;
}
str2[k] = '\0';
}
int main()
{
char str1[] = { "aaebbc" };
char str2[] = { "aabaa" };
char str3[maxsize] = { 0 };
char str4[maxsize] = { 0 };
filter(str1, strlen(str1), str3);
zip(str2, strlen(str2), str4);
puts(str4);
puts(str3);
return 0;
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxsize 20
void filter(const char*str1, int length, char* str2)
{
bool hash[26] = { 0 };
int i, j;
for (i = 0, j = 0; i < length; i++)
{
if (hash[str1[i] - 'a'] == false)
{
hash[str1[i] - 'a'] = true;
str2[j++] = str1[i];
}
str2[j] = '\0';
}
}
void zip(const char* str1, int length, char* str2)
{
int i, j, k, num;
char buff[20];
for (i = 0, k = 0; i < length; i++)
{
num = 0;
for ( j = i + 1; i < length; ++j)
{
if (str1[i] == str1[j])
num++;
else
break;
}
if (num != 0)
{
memset(buff, 0, sizeof(buff));//将buff 初始化:
_itoa_s(num + 1, buff, 10);
strcpy_s(str2+k,sizeof(str2+k), buff);
k += strlen(buff);
}
str2[k++] = str1[i];
i = i + num + 1;
}
str2[k] = '\0';
}
int main()
{
char str1[] = { "aaebbc" };
char str2[] = { "aabaa" };
char str3[maxsize] = { 0 };
char str4[maxsize] = { 0 };
filter(str1, strlen(str1), str3);
zip(str2, strlen(str2), str4);
puts(str4);
puts(str3);
return 0;
}
相关文章推荐
- Why The Golden Age Of Machine Learning is Just Beginning
- 哈夫曼树与哈夫曼编码
- 编程面试题在线训练平台:判断字符串是否没有重复字符
- 输出无名空数组---精android、IOS App应用服务程序开发
- 解决centos KDE命令提示符和文字不紧贴的问题
- iOS开发中使用宏定义提高开发效率
- 静态库与动态库的制作与使用
- 栈默认有多大
- oracle数据库的导入和导出
- 两天以来对plsqldev操作的记忆
- 1021. 个位数统计 (15)
- Windows Server AppFabric与WCF
- Windows Server AppFabric与WCF
- 指针数组、数组指针、指针函数、函数指针、函数指针数组、对象指针解析
- 代码能不能不要写得这么烂?!
- HiveServer2 的jdbc方式创建udf的修改(add jar 最好不要使用),否则会造成异常: java.sql.SQLException: Error while processing statement: null
- 图像处理中的数学原理详解(Part5) ——傅立叶级数的概念2
- 冲击GCT——考试法宝
- java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
- 算法计划