一个字符串中可能包含a~z中的多个字符,如有重复,求出现次数最多的那个字母及次数,如有多个重复则都求出来。
小结:
引入TreeSet:通过集合快速找到所有出现的字符,去除冗余;
引入ArrayList,使用快速排序,生成排序后的字符串;
如果频繁修改操作String,建议用StringBuffer类;
如果出现次数相同,则把相应的字符都记录到一个新的List里面;
使用泛型,可以大大降低出错的概率,减少类型转换可能带来的问题。
/**/
/*
*Main.java
*
*Createdon2007-9-28,22:39:31
*
*Tochangethistemplate,chooseTools|Templates
*andopenthetemplateintheeditor.
*/
package test;
import java.util. * ;
/***/ /**
*
*@authorJeffery
*/
public class Main ... {
/***//**
*@paramargsthecommandlinearguments
*/
publicstaticvoidmain(String[]args)...{
Stringinput="aavzcadfdsfsdhshgWasdfasdfdddaaa";
newMain().doString(input);
}
publicvoiddoString(Stringinput)...{
char[]chars=input.toCharArray();
ArrayList<String>lists=newArrayList<String>();
TreeSet<String>set=newTreeSet<String>();
for(inti=0;i<chars.length;i++)...{
lists.add(String.valueOf(chars[i]));
set.add(String.valueOf(chars[i]));
}
System.out.println(set);
Collections.sort(lists);
System.out.println(lists);
StringBuffersb=newStringBuffer();
for(inti=0;i<lists.size();i++)...{
sb.append(lists.get(i));
}
input=sb.toString();
System.out.println(input);
intmax=0;
StringmaxString="";
ArrayList<String>maxlist=newArrayList<String>();
Iterator<String>its=set.iterator();
while(its.hasNext())...{
Stringos=its.next();
intbegin=input.indexOf(os);
intlast=input.lastIndexOf(os);
intvalue=last-begin+1;
if(value>max)...{
max=value;
maxString=os;
maxlist.add(os);
}elseif(value==max)...{
maxlist.add(os);
}
}
intindex=0;
for(inti=0;i<maxlist.size();i++)...{
if(maxlist.get(i).equals(maxString))...{
index=i;
break;
}
}
System.out.print("Themostoccuredcharacteris");
for(inti=index;i<maxlist.size();i++)...{
System.out.print(maxlist.get(i)+"");
}
System.out.println();
System.out.println("Theyoccured"+max+"times");
}
}
*Main.java
*
*Createdon2007-9-28,22:39:31
*
*Tochangethistemplate,chooseTools|Templates
*andopenthetemplateintheeditor.
*/
package test;
import java.util. * ;
/***/ /**
*
*@authorJeffery
*/
public class Main ... {
/***//**
*@paramargsthecommandlinearguments
*/
publicstaticvoidmain(String[]args)...{
Stringinput="aavzcadfdsfsdhshgWasdfasdfdddaaa";
newMain().doString(input);
}
publicvoiddoString(Stringinput)...{
char[]chars=input.toCharArray();
ArrayList<String>lists=newArrayList<String>();
TreeSet<String>set=newTreeSet<String>();
for(inti=0;i<chars.length;i++)...{
lists.add(String.valueOf(chars[i]));
set.add(String.valueOf(chars[i]));
}
System.out.println(set);
Collections.sort(lists);
System.out.println(lists);
StringBuffersb=newStringBuffer();
for(inti=0;i<lists.size();i++)...{
sb.append(lists.get(i));
}
input=sb.toString();
System.out.println(input);
intmax=0;
StringmaxString="";
ArrayList<String>maxlist=newArrayList<String>();
Iterator<String>its=set.iterator();
while(its.hasNext())...{
Stringos=its.next();
intbegin=input.indexOf(os);
intlast=input.lastIndexOf(os);
intvalue=last-begin+1;
if(value>max)...{
max=value;
maxString=os;
maxlist.add(os);
}elseif(value==max)...{
maxlist.add(os);
}
}
intindex=0;
for(inti=0;i<maxlist.size();i++)...{
if(maxlist.get(i).equals(maxString))...{
index=i;
break;
}
}
System.out.print("Themostoccuredcharacteris");
for(inti=index;i<maxlist.size();i++)...{
System.out.print(maxlist.get(i)+"");
}
System.out.println();
System.out.println("Theyoccured"+max+"times");
}
}
引入TreeSet:通过集合快速找到所有出现的字符,去除冗余;
引入ArrayList,使用快速排序,生成排序后的字符串;
如果频繁修改操作String,建议用StringBuffer类;
如果出现次数相同,则把相应的字符都记录到一个新的List里面;
使用泛型,可以大大降低出错的概率,减少类型转换可能带来的问题。