• 某书2018面试题之最长对称子串


    一、题目
      输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出 4。
    二、思路

      遍历原字符串的所有子串,然后判断每个子串是否对称;该方法的时间复杂度:O(n3); 

    三、代码

    方法一的代码:

    package redbook;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    /**
     * 我们让一个指针i从头至尾遍历,我们用另一个指针j从j=i+1逐一指向i后面的所有字符。就实现了原串的所有子串的遍历(子串为指针i到j中间的部分),最后判断得到的子串是否对称即可。
     */
    public class Main4 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            //存储所有子串
            ArrayList<String> arrayList = new ArrayList<>();
    
            while (in.hasNext()) {
                //输入字符串
                String str = in.nextLine();
                //获取所有的子串
                StringBuffer sb = new StringBuffer();
                sb.append(str);
                for (int j = 0; j < sb.length(); j++) {
                    for (int i = j; i < sb.length() + 1; i++) {
                        arrayList.add(sb.substring(j, i));
                    }
                }
                //判断子串是否对称,如果对称获取其长度,然后返回最大的长度
               int theMaxLength=theMaxLength(arrayList);
                System.out.println(theMaxLength);
            }
        }
    
        public static int theMaxLength(ArrayList<String> arrayList) {
            int maxLength = 0;
            StringBuffer sb2 = new StringBuffer();
    
            for (int i = 0; i < arrayList.size(); i++) {
                String strTemp1 = arrayList.get(i);
               System.out.println(strTemp1);
                //字符串逆序
                String strTemp2 = sb2.append(strTemp1).reverse().toString();
                //将 sb2对象重新附值
                sb2=new StringBuffer();
                //获取对称子字符串的最大长度
                if(strTemp1.equals(strTemp2) && strTemp1.length()>maxLength){
                    maxLength=strTemp1.length();
                }
            }
            return maxLength;
        }
    }
    View Code

    ---------------------------------------------

    参考链接:

    http://www.cnblogs.com/mickole/articles/3578298.html

  • 相关阅读:
    程序员职业规划
    SSH框架优缺点
    Servlet的生命周期,并说出Servlet和CGI的区别,Servlet与JSP的区别
    什么是J2EE,包括哪些规范!
    JS中定义类的方法
    audio.js – 随时随地,播放 HTML5 的声音
    jquery面试题里 缓存问题如何解决?
    产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
    JAVA排序算法
    java面试题中常见的关于String类问题总结
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7729568.html
Copyright © 2020-2023  润新知