关于字符串


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;


    }
}

 

posted @ 2020-06-13 13:29  kkzhang  阅读(161)  评论(0编辑  收藏  举报