【劍指offer-Java版】35第一個只出現一次的字符

第一個只出現一次的字符:
對於給定的字符,遍歷一遍,然後將其映射到一個hash表中,遍歷完成之後,遍歷哈希表,
遇到的第一個哈希值爲1所對應的字符就是第一個只出現了一次的字符


    public class _Q35<T> {


    public char FirstNotRepeatingChar(char chars[]){
        if(chars == null) return '\0'; // 不知java中返回個什麼好

        int hash[] = new int[256];
        for(int i=0; i<chars.length; i++){
            hash[chars[i]]++;
        }

        int resultIndex = 0;
        for(int i=0; i<chars.length; i++){
            if(hash[chars[i]] == 1){
                resultIndex = i;
                break;
            }
        }

        if (resultIndex != 0) {
            return chars[resultIndex];
        } else {
            return '\0';
        }
    }

    }

測試代碼:


    public class _Q35Test extends TestCase {

    _Q35 firstNoRepeat = new _Q35();

    public void test(){

        String str1 = "abaccdeff";
        String str2 = "aaaacba";
        String str3 = "";
        String str4 = "abcabc";

        System.out.println(firstNoRepeat.FirstNotRepeatingChar(str1.toCharArray()));
        System.out.println(firstNoRepeat.FirstNotRepeatingChar(str2.toCharArray()));
        System.out.println(firstNoRepeat.FirstNotRepeatingChar(str3.toCharArray()));
        System.out.println(firstNoRepeat.FirstNotRepeatingChar(str4.toCharArray()));

    }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章