zoukankan      html  css  js  c++  java
  • 回文

    public class Palindrome {  
        private static String longestPalindrome(String str){  
            int n=str.length();  
            if(str==""){  
                return "";  
            }  
            String longest=str.substring(0, 1);
            for(int i=0;i<n-1;i++){  
                //开始每次都按照一个字母一个字母走,当走到临界处(比如aba,b就是临界处。abba则是另一种情况。也就是对应的下面的p2.分情况应该就是分这两种情况),则返回最长的回文数
                String p1=expandAroundCenter(str,i,i);  
                if(p1.length()>longest.length()){  
                    longest=p1;  
                }  
                String p2=expandAroundCenter(str,i,i+1);  
                if(p2.length()>longest.length()){  
                    longest=p2;
                }  
            }  
            return longest;       
        } 
        /**
         * 比如aba,这里当i指向b的时候,此函数会返回aba,会以b为中心,向左向右查询回文数,并返回最长的回文数
         */
        private static String expandAroundCenter(String str,int l,int r){  
            int n=str.length();       
            while(l>=0&&r<=n-1&&str.charAt(l)==str.charAt(r)){  
                l--;  
                r++;  
            }         
            
            return str.substring(l+1, r);         
        }  
        public static void main(String[] args){  
            String str="bb";  
            String s=longestPalindrome(str);  
            System.out.println(s.length());  
        }  
    }  
  • 相关阅读:
    noip的一些模板(参考了神牛的博客)
    NOIP算法总结与复习
    算是一份学习计划
    RMQ-ST算法的理解与实现(C++)
    SharePoint2010母版页想要的定制
    Memoization
    mutable and immutable
    Sqlite
    PyCharm Change Font Size
    Sublime Text添加gcc编译器
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/5823761.html
Copyright © 2011-2022 走看看