设计一个算法将两个字符串合并按字母排序
2014-08-13 10:40
274 查看
问题:给定两个字符串,设计一个算法将两个字符串合并按字母排序输出?
解决方法:
1-先扫描2个字符串,统计相应字符的数量
2-赋值给另一个数组,并输出;
代码:
#include<stdio.h>
int main()
{
char *p1 = "heheaABABACDS";
char *p2 = "oouu";
unsigned a[58] = {0};
char c[100];
int temp = 0;
while(*p1 != '\0')
{ temp = (((*p1) - 'A' ) % 58);
a[temp]++; //统计频率
p1++;
}
while(*p2 != '\0')
{
temp = (((*p2) - 'A' ) % 58 ) ;
a[temp]++; //统计频率
p2++;
}
int i=0 , j = 0;
#if 1
for(i = 0 ; i < 58 ; i++ )
{
while(a[i]) //输出相应的个数
{
printf("%c",(i+'A')); //输出字符
a[i]--;
c[j] = (i+'A') ; //保存到数组C中
j++; //C数组下标
}
}
#endif
printf("\n");
for(i=0;i<j;i++) //验证C数组是佛存储了2个合并的集合
printf("%c",c[i]);
return 1;
}
解决方法:
1-先扫描2个字符串,统计相应字符的数量
2-赋值给另一个数组,并输出;
代码:
#include<stdio.h>
int main()
{
char *p1 = "heheaABABACDS";
char *p2 = "oouu";
unsigned a[58] = {0};
char c[100];
int temp = 0;
while(*p1 != '\0')
{ temp = (((*p1) - 'A' ) % 58);
a[temp]++; //统计频率
p1++;
}
while(*p2 != '\0')
{
temp = (((*p2) - 'A' ) % 58 ) ;
a[temp]++; //统计频率
p2++;
}
int i=0 , j = 0;
#if 1
for(i = 0 ; i < 58 ; i++ )
{
while(a[i]) //输出相应的个数
{
printf("%c",(i+'A')); //输出字符
a[i]--;
c[j] = (i+'A') ; //保存到数组C中
j++; //C数组下标
}
}
#endif
printf("\n");
for(i=0;i<j;i++) //验证C数组是佛存储了2个合并的集合
printf("%c",c[i]);
return 1;
}
相关文章推荐
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 设计一个算法将两个字符串合并按字母排序
- 如何将两个有重复字符在内的字符串合并成一个,并且排序
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 每天一个小算法(1)----合并两个已经排序的数组
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
- 剑指offer2.3.2字符串:有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2,编写一个函数,将A2合并到A1并排序
- 设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。
- 编写一个程序 输入字符串 直到遇到NULL 实现字符串的首字母排序(图)
- 将一个字符串元音字母复制到另一个字符串,并排序
- 百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
- 将一个字符串的元音字母复制到另一个字符串并排序