zoukankan      html  css  js  c++  java
  • 关于字符串


    import java.util.*;
    
    public class Main{
        public static void main(String [] args)
        {
            Scanner sc=new Scanner(System.in);
            while(sc.hasNext())
            {
                char[] words=sc.nextLine().toCharArray();
                Map<String,Integer> map=new HashMap<>();
                for(char c:words)
                {
                    String temp=String.valueOf(c);
                    if((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9')||(c==' ')){
                    if(map.keySet().contains(temp))
                    {
                        map.put(temp,map.get(temp)+1);
                    }else{
                        map.put(temp,1);
                    }
                    }
    
                }
                List<Map.Entry<String,Integer>> list=new ArrayList<>(map.entrySet());
                Collections.sort(list, new Comparator<Map.Entry<String,Integer>>(){
                    @Override
                    public int compare(Map.Entry<String,Integer> o1, Map.Entry<String,Integer> o2)
                    {
                        if(o1.getValue()<o2.getValue())
                        {
                            return 1;
                        }else{
                            if(o1.getValue()==o2.getValue())
                            {
                                return o1.getKey().compareTo(o2.getKey());
                            }
                            else
                            {
                                return -1;
                            }
                        }
                    }
                });
                
                for(Map.Entry<String,Integer> entry:list)
                {
                    System.out.print(entry.getKey());
                }
                System.out.println();
            }
        }
    }


    class Solution {
        public String longestPalindrome(String s) {
            if(s.equals(""))
                return "";
                String res="";
            String origin=s;
            String reverse=new StringBuilder(s).reverse().toString();
            int length=s.length();
            int [][] arr=new int[length][length];
            int max=0,end=0;
            for(int i=0;i<length;i++){
                for(int j=0;j<length;j++){
                    if(origin.charAt(i)==reverse.charAt(j)){
                        if(i==0 || j==0){
                            arr[i][j]=1;
                        }else{
                            arr[i][j]= arr[i-1][j-1]+1; //动态规划寻找两个字符串的最大公共子串
                        }
                    }
                    if( arr[i][j]>max){    //当前最大子串
                        String str=origin.substring(i-arr[i][j]+1,i+1);  //截取子串
                        if(isTrue(str)){    //判断是否为回文串
                            max=str.length();  //记录最大长度
                            res=str;           //记录结果
                        }
                    }
                }
            }
            return res;
        }
    
        public boolean isTrue(String s){
            int len=s.length();
            for(int i=0;i<len/2;i++){
                if(s.charAt(i)!=s.charAt(len-i-1)){
                    return false;
                }
            }
            return true;
        }
    }

    import java.util.*;
    class Solution {
        public int lengthOfLongestSubstring(String s) {
            if(s.length()==0 || s==null)
                return 0;
            HashMap<Character,Integer> map=new HashMap<>();
            int max=0;
            int left=0;
            for(int i=0;i<s.length();i++){
                if(map.containsKey(s.charAt(i))){
                    left=Math.max(left,map.get(s.charAt(i))+1);//利用map的Key的唯一性,得到无重复子串的最左端
                }
                map.put(s.charAt(i),i);
                max=Math.max(max,i-left+1);
            }
    
            return max;
    
        }
    }

    class Solution {
         List<String> list=new ArrayList<>();
         String[] str=new String[]{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        public List<String> letterCombinations(String digits) {
    
    
            if(digits==null || digits.length()==0)
            return list;
    
            String res="";
            getString(res,digits,0);
            return list;
    
        }
    public void getString(String res,String digits,int i){
        if(i==digits.length()){
            list.add(res);
            return;
        }
        int num=Integer.parseInt(String.valueOf(digits.charAt(i)));
        for(int j=0;j<str[num].length();j++){
            getString(new String(res+str[num].charAt(j)),digits,i+1);
        }
    }
    }

    class Solution {
        public boolean isValid(String s) {
    
            if(s==null || s.length()==0){
                return true;
            }
            if(s.length()%2==1)
                return false;
    
            Stack <Character> stack=new Stack<>();
            for(int i=0;i<s.length();i++){
                if(s.charAt(i)=='(' || s.charAt(i)=='[' ||s.charAt(i)=='{'){
                    if(s.charAt(i)=='(')
                        stack.push(')');
                    if(s.charAt(i)=='[')
                        stack.push(']');
                    if(s.charAt(i)=='{')
                        stack.push('}');
                }
                else{
                    if(stack.size()>0){
                        char a=stack.pop();
                        if(a!=s.charAt(i))
                        return false;
                    }
                }
            }
    
            if(stack.size()!=0)
                return  false;
            else
                return true;
    
    
        }
    }
  • 相关阅读:
    前端chrome浏览器调试总结
    this指南——绑定了谁?
    轮播图终极版
    一个后台项目的总结
    h5 websocket 断开重新连接
    ios手机键盘拉起之后页面不会回退的问题
    promise 的串行执行
    js中对小数的计算
    对问卷项目的优化
    禁止eslint对指定代码检测
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/13113708.html
Copyright © 2011-2022 走看看