第一个只出现一次的字符

题目描述

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

类似桶排序的思路:

注意:在java中String的长度不能用str.size(),而只有str.length();

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        int []cnt=new int[130];
        for(int i=0;i<str.length();i++){
        cnt[str.charAt(i)-'0']++;    
        }
         for(int i=0;i<str.length();i++){
          if(cnt[str.charAt(i)-'0']==1){
              return  i;  
        }   
        }
        
        return -1;
    }
}

 

class Solution {
    public char firstUniqChar(String s) {
    int []f=new int[26];
    int len=s.length();
    for(int i=0;i<len;i++){
        char ch=s.charAt(i);
        f[ch-97]++;
    }
     for(int i=0;i<len;i++){
        char ch=s.charAt(i);
        if(f[ch-97]==1){
            return ch;
        }
    }
    return ' ';
    }
}

不一样的烟火
原文地址:https://www.cnblogs.com/cstdio1/p/11237380.html