网上看到有人对一道题目的求解,看了半天,没看明白。于是自己动手来做了一下。原文链接:http://www.cnblogs.com/justcxtoworld/p/3598791.html
题目:
描述:
输入一串数字,找到其中包含的最大递增数。递增数是指相邻的数位从小到大排列的数字。如: 2895345323,递增数有:289,345,23, 那么最大的递减数为345。
输入:
输入一串数字,默认这串数字是正确的,即里面不含有字符/空格等情况
输出:
输出最大递增数
样例输入:
123526897215
样例输出:
2689
#include <iostream> #include <assert.h> using namespace std; long maxIncrease(char* str, int length) { long result = str[0] - '0'; long resultNext = 0; for (int i = 0; i < length; ++i) { int numNext = str[i+1] - '0'; int num = str[i] - '0'; if (numNext > num) { result = result * 10 + numNext; } else { if ( result > resultNext ) { resultNext = result; } result = numNext; } } return resultNext; } int main() { assert(345 == maxIncrease("2895345323", strlen("2895345323"))); assert(2689 == maxIncrease("123526897215", strlen("123526897215"))); return 0; }