关于字符串
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; } }