网上看到有人对一道题目的求解,看了半天,没看明白。于是自己动手来做了一下。原文链接: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;
}