黑马程序员技术交流社区
标题:
关于字符串中字符个数问题
[打印本页]
作者:
刘松703
时间:
2013-12-19 17:30
标题:
关于字符串中字符个数问题
*获取一个字符串中每个字符出现的次数。例如:"abkabklok"打印输出a(2)b(2)k(3)l(1)o(1)
*/
public class String_5{
public static void main(String[] args){
stringCount();
}
public static void stringCount(){
String str="abkkajjuda";
char[] ch=str.toCharArray();
for(int i=0;i<str.length();i++){
int count=0;
int index=0;
while((index=str.indexOf(ch[i],index))!=-1){
index++;
count++;
}
System.out.print(ch[i]+"("+count+")");
}
}
}
我这种方法输出的结果有重复,该如何改善才能避免重复,前面字符a已经求出出现次数
作者:
代文娟
时间:
2013-12-19 18:18
这是给你修改的,希望对你有帮助:
public class Test{
public static void main(String[] args){
stringCount();
}
public static void stringCount(){
String str="abkkajjuda";
char[] ch=str.toCharArray();
char[] chs=new char[str.length()];
int m=0;
w: for(int i=0;i<str.length();i++){
for(int j=0;j<chs.length;j++)
{
if(chs[j]==ch[i])
continue w;
}
int count=0;
int index=0;
while((index=str.indexOf(ch[i],index))!=-1){
index++;
count++;
}
chs[m++]=ch[i];
System.out.print(ch[i]+"("+count+")");
}
}
}
复制代码
作者:
松毛
时间:
2013-12-19 19:01
这个题我做过!东拼西凑把它做出来了,可能不是很好。
import java.util.Set;
import java.util.TreeSet;
public class Test03 {
public static void main(String[] args) {
String str = "abcdekka27qoq";
characterCount(str);
}
private static void characterCount(String str){
//由于要取出字符串中字母出现的次数,所以要将字符串中的数字去掉;
str = str.replaceAll("\\d", "");
//获取没有重复字符的字符串;
String str1 = singleCharacter(str);
//从没有重复字符串的第一个字符开始查找在原串中的个数;
for(int i=0; i<str1.length(); i++){
int count = getCount(str, str1.charAt(i));
System.out.print(str1.charAt(i) + "(" + count + ")");
}
}
//该方法用来查找每个字符在字符串中出现的次数
private static int getCount(String str,char key){
int count = 0;
int index = 0;
//查找字符是否在字符串中存在,如果存在则计数器加1;不存在则退出循环;index记录查找到的字符出现的位置;
while((index=str.indexOf(key)) != -1){
//每查找到一个与key相同的字符后,下一次将从该位置起的下一个字符串开始查找;
str = str.substring(index+1);
count++;
}
return count;
}
//定义一个方法让去掉字符串中重复的元素;
private static String singleCharacter(String str){
//将字符串变成字符数组;
char[] array = str.toCharArray();
StringBuffer sb = new StringBuffer();
//定义一个TreeSet集合,字符数组中的元素存入到集合中;以便去掉重复元素;
Set<Character> ts = new TreeSet<Character>();
for(int i=0; i<array.length; i++){
ts.add(array[i]);
}
for(char c: ts){
sb.append(c);
}
//将得到的符变成字符串返回;
return sb.toString();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2