最大递增数

男娘i 2022-08-01 18:28 237阅读 0赞

输入一串数字,找到其中包含的最大递增数。递增数是指相邻的数位从小到大排列的数字。如: 2895345323,递增数有:289,345,23, 那么最大的递增数为345。运行时间限制:无限制内存限制:无限制输入:输入一串数字,默认这串数字是正确的,即里面不含有字符/空格等情况输出:输出最大递增数样例输入:123526897215样例输出:2689

  1. // MaxIncreseNum.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include<iostream>
  5. using namespace std;
  6. char* MaxIncreaseNum(char*numstr);
  7. int _tmain(int argc, _TCHAR* argv[])
  8. {
  9. //char* in = "48917467";
  10. //char* in = "12345678";
  11. char* in = "244891746789";
  12. cout << "原字符串是:";
  13. for (int i = 0; i < strlen(in); i++)
  14. cout << in[i];
  15. cout << endl;
  16. cout << "字符串长度为"<<strlen(in) << endl;
  17. char*out = MaxIncreaseNum(in);
  18. cout << "最大递增数是:";
  19. for (int i = 0; i < strlen(in); i++)
  20. cout << out[i];
  21. cout << endl;
  22. //下面测试atoi函数,只是验证,与题目无关
  23. int k;
  24. k = atoi("123 ");//测试带空格的字符串的输出,结果输出为123
  25. cout << k <<0;
  26. system("pause");
  27. return 0;
  28. }
  29. char* MaxIncreaseNum(char*numstr)
  30. {
  31. int j = 0;
  32. char*findNum = new char[strlen(numstr)];//store the find num
  33. char*MaxNum = new char[strlen(numstr)];//store the max num
  34. for (int i = 0; i < strlen(numstr); i++)
  35. {
  36. findNum[i] = ' ';
  37. MaxNum[i] = ' ';
  38. }
  39. MaxNum[0] = numstr[0];
  40. int digitofnum = 1;
  41. while (j < strlen(numstr)-1)
  42. {
  43. int k = 0;
  44. findNum[0] = numstr[j];
  45. while (numstr[j] < numstr[j + 1])
  46. {
  47. k = k + 1;
  48. j = j + 1;
  49. findNum[k] = numstr[j];
  50. }
  51. if (k + 1>digitofnum)//如果找到的数的位数大于之前的最大数的位数
  52. {
  53. digitofnum = k + 1;
  54. for (int i = 0; i < strlen(numstr); i++)
  55. {
  56. MaxNum[i] = findNum[i];
  57. }
  58. }
  59. if (k + 1 == digitofnum);//如果找到的数的位数等于之前的最大数的位数
  60. {
  61. int gg = atoi(MaxNum);
  62. int kk = atoi(findNum);
  63. if (kk>gg)
  64. for (int i = 0; i < strlen(numstr); i++)
  65. {
  66. MaxNum[i] = findNum[i];
  67. }
  68. }
  69. j = j + 1;
  70. }
  71. return MaxNum;
  72. }

发表评论

表情:
评论列表 (有 0 条评论,237人围观)

还没有评论,来说两句吧...

相关阅读

    相关 179.

    给定一组非负整数 `nums`,重新排列它们每个数字的顺序(每个数字不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 示例

    相关 LeetCode179.

    难度:`中等` 题目描述: > 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 > 注意:输出结果可能非常大,所以你需要返

    相关 179.

    > 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 > > 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 >

    相关 递增

    输入一串数字,找到其中包含的最大递增数。递增数是指相邻的数位从小到大排列的数字。如: 2895345323,递增数有:289,345,23, 那么最大的递增数为345。运行时间