最好网站建设公司排名,网址服务器查询,2024最新一轮病毒症状,wordpress mu 博客群解法一:用map记录<字母,字母出现的次数>,循环取出value-1,每次判断已经取出的字母(Set记录)是否还在后面存在(value>1),若存在继续循环,若不存在开启…
importjava.util.*;/*** @author longyy* @version 1.0*/classSolution79{publicList<Integer>partitionLabels(String s){List<Integer> result =newArrayList<>();if(s ==null|| s.length()==0)return result;int n = s.length();Map<Character,Integer> has =newHashMap<>();for(int i =0; i < n; i++){if(has.containsKey(s.charAt(i))){has.put(s.charAt(i), has.get(s.charAt(i))+1);}else{has.put(s.charAt(i),1);}}int num =0;Set<Character> curr =newHashSet<>();int i=0;while(i<n){curr.add(s.charAt(i));num++;has.put(s.charAt(i), has.get(s.charAt(i))-1);boolean isEnd =true;for(char c : curr){if(has.get(c)>0){// 后面还有,还没取完isEnd =false;break;}}if(isEnd){result.add(num);curr.clear();num=0;}i++;}return result;}publicstaticvoidmain(String[] args){Scanner in =newScanner(System.in);String s = in.nextLine();Solution79 sol =newSolution79();System.out.println(sol.partitionLabels(s));}}