【编程题目】在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。
第 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; }