如何求由已知字符串产生的N个字符串的第M个字符串
来源:互联网 发布:福建茶叶出口数据 编辑:程序博客网 时间:2024/06/18 08:47
/************************************************************************1、输入一个字符串(字符串个数为N)2、由已知字符串产生N-1个字符串,产生规则如下: 将第i个字母之前的所有i - 1个字母整体移到末尾3、加上原来的字符串总共N个,输出这N个字符串中某一个(字符串的大小按字典顺序排列)例如:“BASD”---------|“BASD” ||“ASDB” | ==》》最小的为“ASDB”|“SDBA” ||“DBAS” |---------*************************************************************************/#include <stdio.h>#include <string.h>#include <stdlib.h>int N;char *p[100];void exchange(char *str, int length){ char *begin = str; char *end = str + length - 1; while(begin <= end) { char temp = *begin; *begin = *end; *end = temp; begin++; end--; }}void NString(char *str, int position){ exchange(str, position); exchange(str + position , N - position); exchange(str, N);}/************************************************************************InputString函数对输入字符串进行处理,得到N个新的字符串*************************************************************************/void InputString(char *InpString){ if(NULL == InpString) { return; } N = strlen(InpString); for(int i = 0; i < N; i++) { p[i] = (char *)malloc((N + 1)* sizeof(char)); if(NULL == p[i]) { return; } strcpy(p[i], InpString); } for(int i = 1; i < N; i++) { NString(p[i], i);//按照题意得到N个字符串 } return;}void SortString(){ for(int i = 0; i < N - 1; i++) { int k = i; for(int j = i + 1; j < N; j++) { if(strcmp(p[k], p[j]) > 0) { k = j; } } if(k != i) { char *temp = (char *)malloc(N + 1); if(NULL == temp) { return; } strcpy(temp, p[k]); strcpy(p[k], p[i]); strcpy(p[i], temp); free(temp); } }}/************************************************************************FindString函数首先对N个字符串按字典顺序排序,然后按照参数输出第SerialNUmber个字符串到Outpstr中*************************************************************************/void FindString(int SerialNumber, char* Outpstr){ if(SerialNumber < 1 || SerialNumber > N) { return; } if(NULL == Outpstr) { return; } SortString(); strcpy(Outpstr, p[SerialNumber - 1]); return;}/************************************************************************clear函数对申请的存储字符串序列的空间进行释放*************************************************************************/void clear(){ for(int i = 0; i < N; i++) { free(p[i]); }}int main(){ char str[] = "BASD"; char *out = (char *)malloc(strlen(str) + 1); InputString(str); FindString(3, out); printf("%s", out); free(out); clear(); return 0;}
0 0
- 如何求由已知字符串产生的N个字符串的第M个字符串
- EXCEL函数取出第N个特定字符串与第M个特定字符串之间的字符
- 一个包含n个字符的字符串,从第m个字符开始复制成为另外一个字符串
- 有n 个长为m+1 的字符串,求前后m个字符匹配所能形成的最长字符串链:利用弗洛伊德算法求最长路径
- 给一个由n个单词组成的字符串排序
- 产生N个字符组成的字符串:数字+字母
- 有n 个长为m+1 的字符串,求前后m个字符匹配所能形成的最长字符串链
- 有n 个长为m+1 的字符串
- 有n 个长为m+1 的字符串
- 有n个长为m+1的字符串
- 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部复制成为另一个字符串。
- 【c语言】一个字符串,包含n个字符。将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
- 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
- 求n个字符串的最大相同子串
- 随机产生n个字符串排序输出
- c# 给字符串的第n个字符赋值
- MFC 获取字符串的第n个字符
- 从原字符串的第m个开始的全部字符复制成为另一个字符串
- 小蜜蜂的问题
- android inten startActivity
- _IO, _IOR, _IOW, _IOWR 宏的用法与解析
- 求三个数的最小公倍数
- 一个最简单的IOCP.
- 如何求由已知字符串产生的N个字符串的第M个字符串
- libsvm代码阅读:关于Solver类分析(一)
- 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
- spark源码分析之shuffleFetcher
- 使用 Zsh 的九个理由
- hdu Jungle Roads(水题,prim)
- ubuntu下lnmp和phpmyadmin的配置
- 【JavaScript】数组sort()排序规则
- Linux学习记录--命令与文件的查询