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);

	}

}

  

你可能感兴趣的:(IO)