第 17 題(字符串):
題目:在一個字符串中找到第一個只出現一次的字符。如輸入 abaccdeff,則輸出 b。
思路:此題非常容易。 最開始是想開辟一塊空間存儲每個字符出現的次數。 但轉念一想,似乎沒有必要。 對每一個字符,都依次和后面的比較,若出現了兩次,則檢查下一個字符,遇到只出現一次的,直接輸出就好了。
/* 第 17 題(字符串): 題目:在一個字符串中找到第一個只出現一次的字符。如輸入 abaccdeff,則輸出 b。 分析:這道題是 2006 年 google 的一道筆試題。 */ #include <stdio.h> char findfirstone(char * in) { for(int i = 0; in[i] != '\0'; i++) { int numofnow = 1; char now = in[i]; for(int j = 0; in[j] != '\0'; j++) //這里必須從零開始 或者記錄哪些數字曾經被訪問過 { if(j == i) { continue; } if(now == in[j]) { numofnow++; break; } } if(numofnow == 1) { printf("%c", now); return now; } } printf("no only one alphabet!"); return '\0'; } int main() { char * a = "aaaaaaaaab"; findfirstone(a); return 0; }