在一個字符串(0<=字符串長度<=10000,所有由字母組成)中找到第一個只出現一次的字符,並返回它的位置

方案一:用52的數組來存,以後要在找到的位置中找個最小的java

import java.util.*;數組

public class Solution {code

public int FirstNotRepeatingChar(String str) {

   if(str.length()==0)
       return -1;
    int a[]=new int[52];
    char c[]=str.toCharArray();
    int index=0;
    for(int i=0;i<c.length;i++){
      if(c[i]<='Z'){
          index = c[i]-'A';
          a[index]=a[index]+1;
      }
        else{
            index=c[i]-'a'+26;
            a[index]=a[index]+1;
        }
            
    }
    
    int temp=0;
	
    ArrayList<Integer> list = new ArrayList<Integer>();
    for(int i=0;i<a.length;i++){
        
        if(a[i]==1) 
            for (int j = 0; j < c.length; j++) 
                if (i < 26) {
                    temp =c[j]-'A';
                    if (temp== i) {
                        list.add(j);
                        break;
                      
                    }
                }
                else {
                    temp =c[j]-'a'+26;
                    if(temp==i) {
                        list.add(j);
                        break;
                    }
                }
         
    }
    if(list.isEmpty())
       
    return -1; 
    else
        return Collections.min(list);
}

}get

import java.util.*; public class Solution { public int FirstNotRepeatingChar(String str) { if(str.length()==0) return -1;hash

int a[]=new int['z'-'A'];
   char c[]=str.toCharArray();
   
    for(int i=0;i<c.length;i++)
        a[c[i]-'A']=a[c[i]-'A']+1;
    
    for(int i=0;i<c.length;i++)
        if(a[c[i]-'A']==1)
            return i;
    return -1;

}

}io

//方案二:同樣的道理table

public class Solution {class

public int FirstNotRepeatingChar(String str) {

    if(str.length()==0)
        return -1;

   int a[]=new int['z'-'A'+1];
   char c[]=str.toCharArray();
   
    for(int i=0;i<c.length;i++)
        a[c[i]-'A']+=1;
    
    for(int i=0;i<c.length;i++)
        if(a[c[i]-'A']==1)
            return i;
    return -1;

}

}import

//方案三List

import java.util.*;

public class Solution {

public int FirstNotRepeatingChar(String str) {
    if(str.length()==1)
        return -1;
    Hashtable hash =new Hashtable();
    
    char c[]=str.toCharArray();
    
    for(int i=0;i<c.length;i++){
        if(hash.get(c[i])==null)
            hash.put(c[i],1);
        else
            hash.put(c[i],(int)hash.get(c[i])+1);
    }
    
    for(int i=0;i<c.length;i++)
        if((int)hash.get(c[i])==1)
            return i;
   return -1;
}

}

相關文章
相關標籤/搜索