• LeetCode——Longest Palindromic Substring


    Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

    给定一个字符串S,找出当中的最长回文字符子串。

    1.枚举全部子串,并推断是否是回文串同一时候记录最大长度。超时。

    	//找出全部子串,并推断是否是回文串,每次记录长度
    	public static String longestPalindrome1(String s) {
    		String ret = "";
    		int maxlen = 0;
    		for(int i=0;i<s.length();i++){
    			for(int j=i+1;j<s.length();j++){
    				String temp = s.substring(i,j+1);
    				int len = j - i;
    				if(isPalindrome(temp)){
    					if(len > maxlen){
    						ret = temp;
    						maxlen = len;
    					}
    				}
    			}
    		}
    		return ret;
    	}
    	public static boolean isPalindrome(String s){
    		for(int i=0;i<s.length();i++){
    			if(s.charAt(i) != s.charAt(s.length() - i - 1))
    				return false;
    		}
    		return true;
    	}

    2.由某个中心向两側扩展寻找,找到能够扩展的最大长度。

    	public static String longestPalindrome(String s) {
    		if (s.length() <= 1) 
    			return s;
    
    		String longest = s.substring(0, 1);
    		for (int i = 0; i < s.length(); i++) {
    			String tmp = helper(s, i, i);
    			if (tmp.length() > longest.length()) {
    				longest = tmp;
    			}
    
    			tmp = helper(s, i, i + 1);
    			if (tmp.length() > longest.length()) {
    				longest = tmp;
    			}
    		}
    		return longest;
    	}
    
    	public static String helper(String s, int begin, int end) {
    		while (begin >= 0 && end <= s.length() - 1 && s.charAt(begin) == s.charAt(end)) {
    			begin--;
    			end++;
    		}
    		return s.substring(begin + 1, end);
    	}


  • 相关阅读:
    IE绝对定位元素神秘消失或被遮挡的解决
    14条最佳JS代码编写技巧
    Query中的$.getJSON
    理解JavaScript中的对象
    Javascript的IE和Firefox兼容性汇编
    window.location 与 window.location.href
    认识hasLayout主要IE浏览器css bug的一大罪恶根源
    C/C++版数据结构之排序算法
    C++关键字mutable
    C++关键字explicit
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4330764.html
Copyright © 2020-2023  润新知