微软算法100题25 查找连续最长的数字串
2015-10-26 11:21
288 查看
第25 题:
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr 所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9,
outputstr 所指的值为123456789
思路:两个指针,一个保存当前最长长度的变量max,然后移动指针,直到到字符串尾即可
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr 所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9,
outputstr 所指的值为123456789
思路:两个指针,一个保存当前最长长度的变量max,然后移动指针,直到到字符串尾即可
package com.rui.microsoft; public class Test25_FindLongestDigitString { public static void main(String[] args) { String s = "abcd12345ed125ss12345678900adb11"; int max = find(s); System.out.println(max); } public static int find(String s){ if(null == s || s.isEmpty()) return 0; char[] chars = s.toCharArray(); int max = 0; int start = 0, cur = 0; int len = chars.length; while(cur < len){ while(cur < len && !isDigit(chars[cur])){ cur++; } start = cur; while(cur < len && isDigit(chars[cur])){ cur++; } max = max > (cur - start) ? max : (cur-start); } return max; } private static boolean isDigit(char c){ return c >= '0' && c <= '9'; } }
相关文章推荐
- 3D Touch
- Xcode 7 支持http请求info.plist设置
- 优化
- linux 中php以及nginx的重启命令
- 我也想了解数据挖掘
- 【Android】ADT中使用NDK编译已有的C++实现的库文件
- [问题][已解决]java.io.IOException: Last packet not finished
- kafka
- Sea.js出现Uncaught TypeError: object is not a function的解决方法
- Web页面性能测试工具浅析
- UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图
- C#代码生成器
- 《演讲的艺术》有感
- 关于Homebrew出现GitHub API rate limit错误的解决方法
- java 迭代器模式 详解
- asp实现限制一个ip只能访问一次的方法
- 单例模式的常见应用场景
- 在类似qq或者微信聊天中。如何根据不同的手机发送图片
- 短信验证模块
- java注解