#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int del_other_char(char *str_old, char *str_new)
{
int ret = 0;
if (str_old == NULL || str_new == NULL)
{
return -1;
}
while (*str_old != '\0')//去除除了小写字母以外的任何字符,拷贝到新的字符串中
{
if (*str_old >= 'a' && *str_old <= 'z')
{
*str_new++ = *str_old;
}
str_old++;
}
*str_new = '\0';
return ret;
}
int change_str(char *str_old, char *str_new)
{
int ret = 0;
if (str_old == NULL || str_new == NULL)
{
return -1;
}
while (*str_old != '\0')
{
int ncount = 1;
while (*str_old == *(str_old + 1))
{
ncount++;
str_old++;
}
*str_new++ = *str_old++;
*str_new++ = ncount + 48;
}
*str_new = '\0';
return ret;
}
int main()
{
int ret = 0;
char *str_old = "23423aaaaaabbbbbdddddawewewew323eeee eee2323tyuttt";
char str_new1[100];
char str_new2[100];
ret = del_other_char(str_old, str_new1);
if (ret != 0)
{
printf("ERROR!!! func del_other_char()");
return ret;
}
ret = change_str(str_new1, str_new2);
if (ret != 0)
{
printf("ERROR!!! func change_str()");
return ret;
}
printf("%s", str_new2);
system("pause");
}
#include <iostream>
#include <memory>
using namespace std;
int main()
{
int stat[256];
memset(&stat[0], 0, sizeof(int) * 256);
char s[200] = "aabb2222ccc";
char *p = &s[0];
while (*p != '\0')
{
stat[(int)*p]++;
p++;
}
for (char i = 'a'; i <= 'z'; i++)
if (stat[(int)i] != 0) cout << i << stat[(int)i];
cout << endl;
return 0;
}
新建一个int数组,长度256,用输入值做下标,每出现一次,相应的值加1,然后遍历一遍这个数组就OK了
用map容器或者hash表就可以了