user-0 提问: 关于字符串求助

回复:
user: user-0
content: 引用 2 楼 wangdahu888 的回复:楼主并没有说用c/c++实现,我就用erlang来实现了, %% Author: Administrator %% Created: 2013-10-22 % Description: TODO: Add description to abc -module(abc). -author(tiger). -purpose(test). -export(staticN/2]). whatN(H,[H|T],{ACC,L}) -> whatN( H, T,{ ACC+1 ,L }); whatN(I,[H|T],{ACC,L})->whatN( I, T,{ ACC,[H |L ]}); whatN(_I,[],{ACC,L})->{ACC,L}. %%如果要保持输出顺序不变，这里改为{ACC,lists:reverse( L)}. staticN([],L)->L ; staticN([H|T],L)->                      {Num,List}=whatN( H,[ H| T],{ 0,[]}),                           if                            Num >=2-> staticN(List,[{H,Num}|L]);                           Num<2 ->staticN(List ,L )                           end.  =========================================================================  12> abc:staticN([1,2,3,4,2,5,6,6,a,b,e,f,d,e,9,9,y,y,u,4,3,7,9,1],[]). [{e,2},{y,2},{6,2},{4,2},{3,2},{2,2},{9,3},{1,2}]表示没接触过erlang，还是谢谢你！

user: user-0
content: 引用 1 楼 u011779875 的回复:#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 1024 /// ///一个字符串变换的函数，输入的字符串为英文字母，其中连续出现的次数不超过9次，输出为输入的英文字符+连续出现的次数 ，例如 “ABBCCCC”-> “A1B2C4”。 ///求大神帮助 /// void deal(char * elem,int size) {      int i, j, tmp;          for (i = 0; i < size; i++) {             for (j = size - 1; j > i; j--) {                 if (elem[j] < elem[j-1]) {                 tmp = elem[j-1];                    elem[j-1] =  elem[j];                     elem[j] = tmp;                 }      }    }  } int main() {     int i;     int count = 1;     char temp;     char c_elem[MAX_SIZE];     printf("input \n");     gets(c_elem);     int size = strlen(c_elem);     deal(c_elem,size);       for (i = 0; i < size; i++)             if(c_elem[i]!= c_elem[i+1]){              printf("%c%d", c_elem[i],count);              count = 1;             }             else {              count++;             }           //  printf("%c ", c_elem[i]);       return 0; } 哥们你的代码没问题，谢谢啦！分给你了

user: user-0
content: 引用 楼主 yessigoal 的回复:一个字符串变换的函数，输入的字符串为英文字母，其中连续出现的次数不超过9次，输出为输入的英文字符+连续出现的次数 ，例如 “ABBCCCC”-> “A1B2C4”。 求大神帮助 哥们你的代码没问题！！谢谢啦！

user: user-1
content: 楼主并没有说用c/c++实现,我就用erlang来实现了, %% Author: Administrator %% Created: 2013-10-22 % Description: TODO: Add description to abc -module(abc). -author(tiger). -purpose(test). -export(staticN/2]). whatN(H,[H|T],{ACC,L}) -> whatN( H, T,{ ACC+1 ,L }); whatN(I,[H|T],{ACC,L})->whatN( I, T,{ ACC,[H |L ]}); whatN(_I,[],{ACC,L})->{ACC,L}. %%如果要保持输出顺序不变，这里改为{ACC,lists:reverse( L)}. staticN([],L)->L ; staticN([H|T],L)->                      {Num,List}=whatN( H,[ H| T],{ 0,[]}),                           if                            Num >=2-> staticN(List,[{H,Num}|L]);                           Num<2 ->staticN(List ,L )                           end.  =========================================================================  12> abc:staticN([1,2,3,4,2,5,6,6,a,b,e,f,d,e,9,9,y,y,u,4,3,7,9,1],[]). [{e,2},{y,2},{6,2},{4,2},{3,2},{2,2},{9,3},{1,2}]

user: user-2
content: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 1024 /// ///一个字符串变换的函数，输入的字符串为英文字母，其中连续出现的次数不超过9次，输出为输入的英文字符+连续出现的次数 ，例如 “ABBCCCC”-> “A1B2C4”。 ///求大神帮助 /// void deal(char * elem,int size) {      int i, j, tmp;          for (i = 0; i < size; i++) {             for (j = size - 1; j > i; j--) {                 if (elem[j] < elem[j-1]) {                 tmp = elem[j-1];                    elem[j-1] =  elem[j];                     elem[j] = tmp;                 }      }    }  } int main() {     int i;     int count = 1;     char temp;     char c_elem[MAX_SIZE];     printf("input \n");     gets(c_elem);     int size = strlen(c_elem);     deal(c_elem,size);       for (i = 0; i < size; i++)             if(c_elem[i]!= c_elem[i+1]){              printf("%c%d", c_elem[i],count);              count = 1;             }             else {              count++;             }           //  printf("%c ", c_elem[i]);       return 0; }