給定一個字符串,找出一個子串,擁有連續的字符且長度是最長的

給定一個字符串,找出一個子串,擁有連續的字符且長度是最長的
例子:
給定adddbcddddav
輸出dddd
解法:

public class Test1 {

	/*給出一個字符串,找出連續相同的最長的子串*/
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "adddbcddddav";
		System.out.println(new Test1().solution(s));
	}
	public String solution(String s) {
		if(s.length() <= 0)
			return null;
		else if(s.length() == 1) {
			return s;
		}
		char current = s.charAt(0);//存儲當前目標字符
		int count = 1;//當前目標字符串的連續長度
		int start_temp = 0,end_temp = 0;
		int max = 0;//存儲過往最長子串的長度
		int start = 0,end = 0;//子串在源串的起始與結束位置
		for(int i=1; i < s.length(); i++) {
			if(s.charAt(i) == current) {
				count++;
				end_temp = i;
			}else {
				if(count > max) {
					start = start_temp;
					end = end_temp;
					max = count;
				}
				start_temp = end_temp = i;
				count = 1;
				current = s.charAt(i);
			}
		}
		return s.substring(start,end+1);
	}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章