字符串

    xiaoxiao2026-05-12  9

    1.字符串中最长相同子串(动态方程)

    public class MaxReStr { public String findStr(String s){ if(s==null){ return null; } //最长重复子串的长度 int max=0; //最长重复子串的第一个字符在s中的下标 int first=0; String res = null; //i为每次循环设定的字符串比较间隔:1,2,...,s.length()-1 for(int i=1;i<s.length();i++){ for(int k=0,j=0;j<s.length()-i;j++){ if(s.charAt(j)==s.charAt(j+i)) k++; else k=0; if(k>max){ max=k; first=j-max+1; } } if(max>0){ res = s.substring(first, first+max); } } return res; } public static void main(String[] args) { // TODO Auto-generated method stub String s = "eabcdabcf"; System.out.println(new MaxReStr().findStr(s)); } }

    2.

    字符出现次数

    private static String pass(String s){ if(s==null){return null;} if(s.length()>20){return s;}//也要考虑非法输入 Map<Character,Integer> map=new HashMap<Character,Integer>(); for(int i=0;i<s.length();i++){ if(map.containsKey(s.charAt(i))){map.put(s.charAt(i),map.get(s.charAt(i))+1);} else{map.put(s.charAt(i),1);} } int min=Integer.MAX_VALUE; Collection<Integer> coll=map.values(); for(int i:coll){ if(i<min){ //min=1; min=min>i?i:min; }} Set<Character> set=new HashSet<>(); //查找出现次数最大或者最小的char for(Map.Entry<Character,Integer> i:map.entrySet()){ if(i.getValue().equals(min)){set.add(i.getKey());} } StringBuffer sb=new StringBuffer(); for(int i=0;i<s.length();i++){if(!set.contains(s.charAt(i))){sb.append(s.charAt(i));}} return sb.toString(); }

    3.大写字符转换为小写,并且为下一位

    4.排序,不区分大小写

    StringBuilder builder = new StringBuilder(); for (int i = 0; i < 26; i++) { for (int j = 0; j < str.length(); j++) { if (str.charAt(j) == (i + 'a') || str.charAt(j) == (i + 'A')) { builder.append(str.charAt(j)); } } }

    5.最长回文判断(奇偶长度)

    public class Solution{ public String longestPalindrome(String s) { if (s.isEmpty()) { return null; } if (s.length() == 1) { return s; } String longest = s.substring(0, 1); for (int i = 0; i < s.length(); i++) { // get longest palindrome with center of i String tmp = helper(s, i, i); if (tmp.length() > longest.length()) { longest = tmp; } // get longest palindrome with center of i, i+1 tmp = helper(s, i, i + 1); if (tmp.length() > longest.length()) { longest = tmp; } } return longest; } public 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); }

    6.判断两个字符串包含的字母是否

    private static boolean isBrother(String s1, String s2) { int len1 = s1.length(); int len2 = s2.length(); if (len1 != len2 || s1.equals(s2)) return false; else { int hash[] = new int[26]; for (int i = 0; i < len1; i++) hash[s1.charAt(i) - 'a']++; for (int i = 0; i < len1; i++) hash[s2.charAt(i) - 'a']--; for (int i = 0; i < len1; i++) if (hash[i] != 0) return false; return true; } 相同(字符顺序不一定一致)

    7.a是否包含b

    //  如果两个都为 “”

    <pre name="code" class="java"><pre name="code" class="java">public class Solution { public int strStr(String haystack, String needle) { if(haystack==null||needle==null||needle.length()<0||haystack.length()<0||needle.length()>haystack.length()){return -1;} for(int i=0;i<haystack.length()-needle.length()+1;i++){ int j=0; for(j=0;j<needle.length();j++){ if(haystack.charAt(i+j)!=needle.charAt(j)){ break; } } if(j==needle.length()){return i;} } return -1; } }

    转载请注明原文地址: https://ju.6miu.com/read-1309591.html
    最新回复(0)