Solution 25: 最长连续数字子串

问题描述

在字符串中找出连续最长的数字串,并将该串返回。(略有修改)

解决思路

双指针法。一前一后,注意保存最长连续数字串的开始或者结束位置和最长串的长度,最后返回该子串即可。

程序

public class LongestContinuousDigits {
	public String getLCD(String s) {
		if (s == null || s.length() == 0) {
			return null;
		}

		int i = 0, j = 0;
		int maxLen = 0, len = 0, idx = 0;

		while (j < s.length()) {
			if (!(s.charAt(j) >= '0' && s.charAt(j) <= '9')) {
				i = j;
				len = 0;
			}
			else if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9')) {
				// find the first character
				i = j;
				len = 1;
			}
			else {
				if (s.charAt(j) == s.charAt(i) + 1) {
					// continuous digits string
					++i;
					++len;
				} else {
					len = 0;
					i = j;
				}
			}
			if (len > maxLen) {
				maxLen = len;
				idx = j;
			}
			++j;
		}

		return s.substring(idx - maxLen + 1, idx + 1);
	}
}

  

原文地址:https://www.cnblogs.com/harrygogo/p/4634867.html