题目:
在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。
题目分析:
对于在字符串中找出第一个出现一次的字符,联系ASCII码表,能够得到有256中不同的字符,可以利用字符的编码,将每个字符的编码作为数组的下表,建立一个有256个元素的数组arr[256],将数组中的每一个元素对应统计字符的个数,从字符串的第一个字符进行遍历,遇到一个字符给对应的数组元素加1,当数组中的其中一个元素变到2,则输出这个元素所对应的数组下表,即就是这个字符的ASCII码。
下面为具体的程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char Find(char *p)
{
if(p == NULL)
{
return '\0';
}
int arr1[256];
int i=0;
for(i=0;i<256;i++) //初始化数组
{
arr1[i] = 0;
}
char *q=p;
while((*q)!='\0')
{
arr1[*q]++;
q++;
}
q=p;
while(*q!='\0')
{
if(arr1[*q]==1)
{
return *q;
}
q++;
}
return '\0';
}
int main()
{
char arr[256];
printf("请输入:");
gets(arr);
printf("Find: %2c",Find(arr));
system("pause");
return 0;
}
转载于:https://blog.51cto.com/10740590/1710587