返回字符串的最长数字串

来源:互联网 发布:企业级网络交换机 编辑:程序博客网 时间:2024/06/04 18:18

返回字符串的最长数字串,需要定义两个长度,分别是最大数字串长度和当前最新数字串长度,还需要定义两个buffer缓存,分别是最大数字串缓存和当前最新数字串缓存,如果字符数组有一个字符不是数字,则重置当前最大数字串长度和当前最新数字串缓存,否则接着判断最大数字串长度和当前最新数字串长度哪个大,如果大,需要交换位置,这里没有考虑如果数字串长度相同的。实现过程如下所示:

package structs.string;/** * @author jcm *  * 时间 2016年8月27日 */public class OutPutMaxNumFromString {public static void main(String[] args) {StringBuffer buffer = outPutMaxNumFromString("275565737364567537hudfioa14654227775357573736456gshqio46476466464646hai46687das");System.out.println(buffer.toString());}/** * @author jcm * @see 求字符串最大数字串 * @param str * @return StringBuffer */public static StringBuffer outPutMaxNumFromString(String str){if(str == null)return null;//最大字符串长度,是要和当前最新数字串长度作比较的,如果小于当前最新字符串长度,则交换int maxLength = 0;//实时接收当前最新数字串的长度int currentLength =0;//最长数字串,是要返回的缓存StringBuffer maxBuffer = new StringBuffer();//实时接收当前最新数字串,如果if条件不满足数字串,又会被清理掉,重置nullStringBuffer currentBuffer = new StringBuffer();char[] ch = str.toCharArray();int length = ch.length;for(int i=0;i<length;i++){//如果该字符是数字if(ch[i]<= '9' && ch[i]>='0'){if(currentLength == 0){//由于缓存被赋值null,所以要重新实例化currentBuffer = new StringBuffer();currentBuffer.append(ch[i]);currentLength++;}else{currentBuffer.append(ch[i]);currentLength++;if(currentLength>=maxLength){maxLength = currentLength;maxBuffer = currentBuffer;}}}else{//重置实时最新字符长度和缓存currentLength = 0;currentBuffer = null;}}return maxBuffer;}}
输出结果是:14654227775357573736456

0 0
原创粉丝点击