给一个由n个单词组成的字符串排序
2017-04-17 20:06
183 查看
给一个由n个单词的组成的字符串排序,单词间由空格分隔。
如果字符串为b ab bc,则输出为ab b bc
思路:先将字符串分解成单词数组,然后排序,最后输出
代码如下:
如果字符串为b ab bc,则输出为ab b bc
思路:先将字符串分解成单词数组,然后排序,最后输出
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_N 100 #define MAX_LEN 20 int sortWords(char *s) { if (s == NULL) return 0; char tmp[MAX_N][MAX_LEN]; int cnt = 0; for (int i = 0; i < strlen(s); i++) { int j = i; while (j < strlen(s)) { if (s[j] == ' ') break; j++; } strncpy(tmp[cnt], &s[i], j - i); tmp[cnt][j - i] = 0; cnt++; i = j; } qsort(tmp, cnt, sizeof(tmp[0]), (int (*)(const void*,const void*))strcmp); s[0] = 0; for (int i = 0; i < cnt; i++) { strcat(s, tmp[i]); if (i != cnt - 1) strcat(s, " "); } printf("result:%s\n", s); } int main() { char s[MAX_N * MAX_LEN]; gets(s); sortWords(s); return 0; }
相关文章推荐
- 阿里校招笔试——给定一个字符串S和有效单词的字典D,请确定可以插入到S中的最小空格数,使得最终的字符串完全由D中的有效单词组成,并输出解。
- 编写一个程序,输入一串不超过60个字符组成的且不包含换行符的字符串,将字符串中的A到Z的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度相同,并且要求只对A到Z的字母重新排列,其
- 2018阿里校招笔试——给定一个字符串S和有效单词的字典D,请确定可以插入到S中的最小空格数,使得最终的字符串完全由D中的有效单词组成,并输出解。
- 如何在一个已排序的NSArray中搜索某一特定字符串?答案是使用CFArray自带的搜索功能
- 将一个字符串中的各个位按递增排序的最大整数打印出来
- 一个十分简单的java字符串分词,去重复,排序小程序
- 如何在一个已排序的NSArray中搜索某一特定字符串?答案是使用CFArray自带的搜索功能:
- 以单词为单位倒序输出一个字符串
- 输入一个字符串,输出长度最长的单词
- 做个了分页,只要传入一个SQL字符串,和排序字段就可以了
- 设计函数,输入为一个字符串,里边包含中文、英文、数字等字符,编码为GBK。中文字符的编码规则假定为:双字节组成,高字节大于0x80,低字节任意。
- 作个把字符插入到一个按升序排序的字符串中的方法
- 将字符串分隔成单词(指定一个分隔符)
- 匹配一个字符串,它由0、1、2组成,并且中间没有两个相邻的数字是相同的(比如,匹配1232101210321020,而不匹配1100123)
- 用一个函数实现将一行字符串中最短的单词输出。此行字符串从主函数传递给该函数。假设字符串中包含的单词以空格作为分隔符号,例如”Asia Games 2010 is held in GuangZhou.”,其中最短的单词是”is”和”in”。
- 将字符串中连续出现两次的单词,替换为一个单词
- 一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成.请用c#语言编写主要程序来实现
- 找出字符串中单词长度最长的一个
- 写一个控制台程序,给字符串中每个单词加上双引号.
- 给定一个字符数组,求由这些字符组成的所有不同的排序问题.