注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Aspirer's blog

停止维护,新博客地址:http://aspirer.wang/

 
 
 

日志

 
 

输出字符串中最长的连续数字部分  

2009-10-14 11:39:05|  分类: 学习心得 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

输出字符串中最长的连续数字部分 - aspirer - Aspirers blog

如ab123cd123456ef123456789,应返回9,并将123456789保存到输出字符串中。
#include <iostream>

using namespace std;

#define LEN 100

int maxNum(const char *inputstr, char *outputstr)
{
 int p, pos, num, maxnum, is_num, i;
 p = pos = num = maxnum = is_num = i = 0;

 while (inputstr[p] != '\0')
 {
  if (is_num == 0 && inputstr[p] >= '0' && inputstr[p] <= '9') //数字开始
  {
   num = 1;
   is_num = 1;   
  }

  else if (is_num == 1 && inputstr[p] >= '0' && inputstr[p] <= '9') //中间数字
  {
   num++;
  }

  else if (is_num == 1 && (inputstr[p] < '0' || inputstr[p] > '9')) //数字结束
  {
   is_num = 0;
   if (num > maxnum)
   {
    maxnum = num;
    pos = p - num;
   }
  }

  ++p;  
 }

 if (is_num == 1 && num > maxnum) //若是以数字为结尾的字符串
 {
  pos = p - num;
  maxnum = num;
 }

 for (i = 0; i < maxnum; ++i)
 {
  outputstr[i] = inputstr[pos + i];
 }
 outputstr[num] = '\0';

 return maxnum;
}


int main()
{
 char in[LEN] = "ab123456cd1234ef123456789";
 char out[LEN];
 int len = maxNum(in, out);
 cout << len << ":" << out << endl;
 return 0;
}

  评论这张
 
阅读(750)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018