经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C语言输出唯一的子串
来源:jb51  时间:2021/12/8 12:43:51  对本文有异议

?题目描述

给一个字符串,求长度为m的所有不重复的子串。 比如字符串"aaab",我们求长度为2的子串,那么依次为"aa","aa","ab",那么不重复的子串为"aa","ab"

输入

第一行是一个整数K,表示样例的个数。 每个样例的第一行是一个整数m,表示所求子串的长度。 第二行是一个字符串,字符串全部由小写英文字母组成,长度不超过100。

输出

按字典序输出所有不重复子串,每个样例最后输出一个空行。

样例输入

2?

2?

aaab?

3?

aaab

样例输出

aa?

ab??

aaa?

这道题可以定义一个二维数组用来存放字符串的所有子串,然后排序,最后一个个输出,遇到相同的只输出一个。

完整代码

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. int k,i,j,len,n,l,m;
  6. char str[105]={0},a[102][101]={0},temp[100];
  7. scanf("%d",&k);
  8. while(k--)
  9. {
  10. n = 0;
  11. scanf("%d",&m);
  12. scanf("%s",str);
  13. len = strlen(str);
  14. for(i = 0;i <= len-m;i++)
  15. {
  16. l = 0;
  17. for(j = i;j < i+m;j++,l++)
  18. {
  19. a[n][l] = str[j];//子串
  20. }
  21. n++;
  22. }
  23. for(i = 0; i < n; i++)//排序
  24. {
  25. for(j = i+1; j < n; j++)
  26. {
  27. if(strcmp(a[i],a[j])>0)
  28. {
  29. strcpy(temp,a[i]);
  30. strcpy(a[i],a[j]);
  31. strcpy(a[j],temp);
  32. }
  33. }
  34. }
  35. for(i = 0;i < n;i++)
  36. {
  37. if(strcmp(a[i],a[i+1])==0)//相同的只输出第一个
  38. continue;
  39. for(j = 0;j < m;j++)
  40. printf("%c",a[i][j]);
  41. printf("\n");
  42. }
  43. printf("\n");
  44. memset(str,'\0',sizeof(str));
  45. memset(a,'\0',sizeof(a));
  46. memset(temp,'\0',sizeof(temp));
  47. }
  48. return 0;
  49. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号