zoukankan      html  css  js  c++  java
  • 手撕代码之回文

    美菜网笔试撕代码之回文

    手撕代码中回文出现的频率挺高的:

    编程实现查找字符串中的最长回文。回文代表左右对称的字符串,如aba,abba,要求查找字符串中长度最长的回文,

    如果有多个长度不同的最长回文,任意返回其一。

    输入:cxabaa   返回 aba

    输入:xabacaba 返回 abacaba

    输入:dsabbad 返回 abba

    java上代码:

    public class Palindrome {
        public static void main(String[] args) {
        String sstr="cxabaa";
        String strLongest =longestPalin(sstr);
        System.out.println(strLongest);
        }
        public static String Palindrome(String s,int left,int right) {
            //left与right相当于指针移动
            int n = s.length();
            int l = left;
            int r = right;
            while(l>=0 && r<=n-1 && s.charAt(l)==s.charAt(r)) {
                l--;
                r++;
            }
            String sm=s.substring(l+1, r);//substring截取范围starindex-endindex-1
            return sm;
        }
        public static String longestPalin(String s) {
            int n=s.length();
            if(n<=1) {
                return s;
            }
            String  longest = "";
            for (int i = 0; i < s.length()-1; i++) {
                String str = Palindrome(s,i,i);
                if (str.length()>longest.length()) {
                    longest = str;
                }
                String str1 = Palindrome(s, i, i+1);
                if (str1.length()>longest.length()) {
                    longest = str1;
                }        
            }
            return longest;
        }
    
    }

    结果:

    留白:是否还有其他时间复杂度更小的算法

  • 相关阅读:
    Js实现页面处理器
    自定类型转换
    为什么PHP5中保存cookie以后,要刷新一次才能读取cookie的内容?
    PHP不不支持函数重载
    JS 省市区三级联动
    我喜欢的酷站
    网站宽度设置多少
    Windows环境下Node.js 以及NPM和CoffeeScript的安装配置
    HTML中Meta详解
    搭建SVN
  • 原文地址:https://www.cnblogs.com/xiaonantianmen/p/9803025.html
Copyright © 2011-2022 走看看