A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

写一个最优的算法,找出一个字符串中重复的第一个字母。
我写了一个,想问问大家有没有别的更好的,
public class FoundCommonChar {
        public static void main(String[] args) {
                String str = "adgkjjkkkkhgffftyfdaagjhy";
                char[] chars = str.toCharArray();
                char ch;
               
                outer:
                for(int i=1;i<chars.length-1;i++){
                        for(int j=0;j<i;j++){                       
                                if(chars[j]==chars[i]){
                                        ch = chars[j];
                                        System.out.println("第"+(j+1)+"个字符为第一个重复的字符:" + ch);
                                        break outer;
                                }
                                       
                        }
                               
                }
                               
        }
               
}

5 个回复

倒序浏览
可以利用set集合不允许重复的思想来实现:

import java.util.HashSet;
import java.util.Set;

public class FoundCommonChar {
        public static void main(String[] args) {
                String str = "adgkjjkkkkhgffftyfdaagjhy";

Set<String> hs=new HashSet<String>();
for(int i=0;i<str.length()+1;i++){
boolean b=hs.add(str.substring(i,i+1));
if(!b) {
System.out.println("第一个重复的字母是"+str.substring(i,i+1));
break;
}

}

}

}
回复 使用道具 举报
关键:判断重复,可以用到indexOf(char)=-1的知识
//字符串
String str = "adgkjjkkkkhgffftyfdaagjhy";
//数组
char [] arr = new char[str.length()];
//循环判断:字符存在就返回字符串,不存在就添加数组;
for(int x=0;x<str.length;x++){
     if(arr.indexOf(str.charAt(x))= -1)
           ruturn char;
     else
          arr.add(char);
}
回复 使用道具 举报
  1. String str = "adgkjjkkkkhgffftyfdaagjhy";
  2.             for(int i=0;i<str.length();i++){
  3.                     if((str.indexOf(str.charAt(i), i+1))!=-1){
  4.                             //如果在i+1后的字符串中有和第i个字符相同的字符
  5.                             System.out.println(str.charAt(i));
  6.                             break;
  7.                     }
  8.             }
复制代码
回复 使用道具 举报
OMG 发表于 2012-3-21 14:35
关键:判断重复,可以用到indexOf(char)=-1的知识
//字符串
String str = "adgkjjkkkkhgffftyfdaagjhy";

数组没有indexOf这个方法的 还是要做双循环的
回复 使用道具 举报
大家得出 j 就算是对的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马