• 字符串


    1 最长公共前缀

    class Solution {
        public String longestCommonPrefix(String[] strs) {
           if (strs==null || strs.length==0) return "";
    
            int length = strs[0].length();//第一个字符串的长度
            int count = strs.length;//总共有几个字符串
            for (int i = 0; i < length; i++) {//第一个字符串中每一个字符循环
                char c = strs[0].charAt(i); //这个字符
                for (int j = 1; j < count; j++) {//循环所有字符串
                    if (i == strs[j].length() || strs[j].charAt(i) != c) {
                        return strs[0].substring(0, i);
                    }
                }
            }
            return strs[0];
        }
    }
    
        

    2 最长回文子串

    一个判断字符串是否为回文字符串的代码:

    public boolean vaildPalindromic(char [] array,int left,int right) {
            while(left<right) {
                if(array[left]!=array[right]) {
                    return false;
                }
                left++;
                right--;            
            }
            return true;
        }

     1  暴力方法:

    class Solution {
        public String longestPalindrome(String s) {
            int len=s.length();
            int maxlen=1;
            int begin=0;
            //将字符串变为字符串数组
            char[] charArray=s.toCharArray();
            //枚举所有长度大于1的子串
            for(int i=0;i<len-1;i++) {
                for(int j=i+1;j<len;j++) {
                    if(j-i+1>maxlen&&vaildPalindromic(charArray,i,j)) {
                        maxlen=j-i+1;
                        begin=i;
                    }
                }
            }
            
            return s.substring(begin,begin+maxlen);
        }
    
        
    //判断字符串是否为回文字符串
        public boolean vaildPalindromic(char [] array,int left,int right) {
            while(left<right) {
                if(array[left]!=array[right]) {
                    return false;
                }
                left++;
                right--;            
            }
            return true;
        }
        }

     2 动态规划

    class Solution {
        public String longestPalindrome(String s) {
                int len=s.length();
            int maxlen=1;
            int begin=0;
            //将字符串变为字符串数组
            char[] charArray=s.toCharArray();
            // 动态规划 初始化
            boolean[][] dp=new boolean[len][len];
            for(int i=0;i<len;i++) {
                dp[i][i]=true;
            }
            //填写状态
            // 填表规则:先一列一列的填写,再一行一行的填,
            //保证左下方的单元格先进行计算
            for(int j=1;j<len;j++) {
                for(int i=0;i<j;i++) {
                    //判断这个字符串头尾是否相等,不相等直接false
                    if(charArray[i]!=charArray[j]) {
                        dp[i][j]=false;
                    }else {
                        //如果头尾相等,判断去头去尾是否是回文
                        if (j - i < 3){
                            dp[i][j] = true;
                            }else {
                                //状态转移
                                dp[i][j] = dp[i + 1][j - 1];
                            }
                         if (dp[i][j] && j - i + 1 > maxlen){
                                maxlen = j - i + 1;
                                begin = i;
                            }
                    }
                }
            }       
            return s.substring(begin,begin+maxlen);
        }
        }

     3 翻转字符串里的单词

  • 相关阅读:
    持续集成-禅道
    nohup.out 日志切分
    Flannel 介绍及使用场景
    【Unity游戏开发】初探Unity动画优化
    fastHttp服务端处理请求的过程
    PHPExcel导出文件代码实现
    PHPExcel 1.8
    CKfinder 安装与使用
    Ckeditor的配置
    Ckeditor的使用
  • 原文地址:https://www.cnblogs.com/focusonoutput/p/13775726.html
Copyright © 2020-2023  润新知