给定一个字符串,要求写一个函数来求出这个字符串里面第一个重复的字符,例如字符串"abcda",第一个重复的字符是a。abcdba,第一个重复的字符是b,希望能用java给个完整答案,谢谢

解决方案 »

  1.   

    import java.util.HashSet;public class Test
    {
    public static void main(String[] args)
    {
    HashSet<Character> hs = new HashSet<Character>();
    String test = "asfdsfa";
    char[] arr = test.toCharArray();
    for(int i = 0; i < arr.length; i++)
    {
    if(!hs.add(arr[i]))
    {
    System.out.println("index:" + i + "  ,value:" + arr[i]);
    return;
    }
    }
    }
    }
      

  2.   


    package cn.sky;import java.util.HashMap;
    import java.util.Map;public class Test {
    public static void main(String[] args) throws Exception {
    // 说明:请使用至少1.5的jdk/jre ,并开启自动封装模式+范型模式
    String str = "abcdba";
    Map<Character, Integer> maps = new HashMap<Character, Integer>();
    int length = str.length();// 为不了每次都调用str的length方法,这里用个临时变量保存起来
    Character tempChar;// 字符
    Integer tempNumber;// 字符之前出现的次数
    for (int i = 0; i < length; i++) {
    tempChar = str.charAt(i);
    tempNumber = maps.get(tempChar);
    if (tempNumber == null) {// 为空,说明还没有该字符的重复,将其之前出现的次数设置为0。
    tempNumber = 0;
    }
    if (++tempNumber == 2) {// 如果重复出现的话,其次数至少是2次。之后的运行就没必要了
    System.out.println("第一次出现的重复字符是:" + tempChar);
    return;
    }
    maps.put(tempChar, tempNumber);// 将出现的字符及其数目保存起来。
    }
    }
    }
      

  3.   

    //简单代码如下,没有调试过
    //你可以根据实际需求更改,比如考虑大小写....
    int[] counts = new int[26];
    for(int i = 0; i < 26 ; i++)
      counts[i] = 0;for(int i = 0; i < str.length(); i++)
      counts[str.charAt(i)-'a'] ++;for(int i = 0; i < str.length(); i++){
      if(counts[str.charAt(i)-'a'] > 1)
         return str.charAt(i);
    }
      

  4.   

    public static void checkRepeatChar(String inputString) {
            char[] chars = inputString.toCharArray();
            char repeatChar = ' ';
            for (int i = 0; i < chars.length; i++) {
                for (int j = i+1; j < chars.length; j++) {
                    if (chars[i] == chars[j]) {
                     repeatChar = chars[i];
                        break;
                    }
                }
                if (repeatChar != ' ') {
                    break;
                }
            }
            if(repeatChar != ' ')
             System.out.println("第一个重复的是:" + repeatChar);
            else
             System.out.println("没有重复的字符");
        }
      

  5.   

    不好意思格式乱了。我是直接copy在回复里的。写的时候格式是好的,不知道为什么一回复就乱了。
      

  6.   

    public static void main(String[] args){
    Scanner input = new Scanner(System.in) ;
    System.out.print("请输入第一个字符:");
    String a1 = input.nextLine() ;

    char [] chars = a1.toCharArray() ;

    char charTemp = ' ' ;
    for(int i=0 ; i<chars.length ; i++){
    //System.out.println(chars[i]);
    for(int j=i+1 ; j<chars.length ; j++){
    if(chars[i]==chars[j]){
    charTemp=chars[i] ;
    break ;
    }
    }
    if(charTemp!= ' '){
    break ;
    }
    }
    if(charTemp!= ' '){
    System.out.println("第一个重复的是:" + charTemp) ;
    }else{
    System.out.println("没有重复的!");
    }

    }