您的位置:首页 > 其它

求字符串里里面字符出现的次数和出现哪些不同的字符的字符串

2016-10-12 11:40 113 查看

题目:

字符串里里面字符出现的次数和出现哪些不同的字符

such as 字符串“aaaabbbccd” 打印出出现a4次,b3次,c2次,d1次,出现的不同字符的字符串为“abcd”,或者按照规则打印字符串“4a3b2c1d”

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void getJustOnce(char* inputArray, char* outputArray, int length) {
bool result[26] = {0};
int i, j;
for (i = 0, j = 0; i < length; i++) {
if (result[inputArray[i] - 'a'] == false) {
result[inputArray[i] - 'a'] = true;
outputArray[j++] = inputArray[i];
}
}
outputArray[j] = '\0'; //记得一定要加上
}

void printCharCount1(char* inputArray, int length) {
int result[26] = {0};
int i, j;
for (i = 0; i < length; ++i) {
++result[inputArray[i] - 'a'];
}
for (j = 0; j < 26; ++j) {
if (result[j] != 0) {
char a = j + 'a';
printf("字符%c出现了%d次\n", a, result[j]);
}
}
}

void printCharCount2(char* inputArray,char* outputArray, int length) {
int result[26] = {0};
int i, j, k = 0;
char* s = (char *)malloc(length * sizeof(char));
for (i = 0; i < length; ++i) {
++result[inputArray[i] - 'a'];
}
for (j = 0; j < 26; ++j) {
if (result[j] != 0) {
char a = j + 'a';
sprintf(s, "%d", result[j]); //需要开辟内存
strcat(outputArray, s); //初始话需要为""
sprintf(s, "%c", a);
strcat(outputArray, s);
}
}
}
int main() {
char* inputArray = "aaaaaaaaaaaaaaaaaaaabbbccd";
int length = strlen(inputArray);
printf("字符串长度length:%d\n", length);
char* outputArray = (char *)malloc(length * sizeof(char));
getJustOnce(inputArray, outputArray, length);
printf("字符串里面不同的字符为:%s\n", outputArray);
printCharCount1(inputArray, length);
char resut[200] = "";
printCharCount2(inputArray, resut, length);
printf("字符串里面不同的字符以及次数按规则输出为:%s\n", resut);
return 0;
}

结果:



总结:

1、要用一个都是boo类型的数组,下标为字符串的值减去‘a’的值为下边来作为是否需要加入到另外一个数组里面去为条件

2、要记还要用一个数组去接受,装进去,不要只想到用一个数组,这样思维受到了限制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: