【笔试题】C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。

原创 2016年05月30日 17:14:30
#include<stdio.h>


char firstsingle(char *arr)
{
     char asc[255] = {0};
     int i = 0;
     for(; arr[i] != '\0'; i++)
     {
          asc[arr[i]]++;
     }
     for(i = 0; arr[i] != '\0';i++)
     {
          if(asc[arr[i]] == 1)
          {
             return arr[i];
             return '\0';
          } 
     }
}


int main()
{
     char arr[10];
     char ret;
     scanf("%s",arr);
     ret = firstsingle(arr);
     printf("%c\n",ret);
     return 0; 
}

 

    在字符串中找出第一个只出现一次的字符,首先字符根据ASCLL变共有256种,则建立一个这么长的字符数组,从前往后检索,遇到就计数,如果是符合条件的firstsingle word 则计数后应该为1.

    另外,asc[arr[i]]是将每次输入的字符arr[i]当成ASCII码存储在计算机中。

 

法2:经过更深次地学习,代码修改为(与指针数组结合),

#include<stdio.h>
#define MAX 256//ASCII码共有256个


int main()
{
     char *p = "abaccdeff";
     char arr[MAX] = {0};//初始化
     char *ptr = p;
     /*将指针数组p暂时保存在指针数组ptr中,
     以免经过第一个while循环p已经到‘\0’处*/
     
     while(*p)//遍历整个指针数组
     {
      arr[*p]++;
      /* *p相当于接收的a,b,a..存放的是其ASCII,从0到1,...对其计数,
      而arr[*p++]相当于arr[97]到arr[98],数组后移*/
      p++;//后移 
     }
     p = ptr;//此处使用的刚好的保存好的"abaccdeff"
     while(*p)//再次遍历
     {
          if(arr[*p] == 1)//只出现一次的字符
          {
               printf("%c\n",*p);//输出满足字符的内容
               break;//第一个只出现一次的字符
          } 
          else//否则继续寻找
          {
               p++; 
          }
     }
     return 0; 
}

 

 

wKioL1Y1yFqT_TrPAAC0B2HBPlI672.jpg

 

在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b.

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b.   分析:这道题是2006年google的一道笔试题。   看到这道题时,最直观的想法是从头开始扫描这...

算法习题17:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。    分析:这道题是2006年google的一道笔试题。 --------------------------...
  • ylf13
  • ylf13
  • 2013年10月17日 12:01
  • 925

【C语言】找出一个字符串中第一个只出现一次的字符

题目描述:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006年google的一道笔试题。 方法一:     简单粗暴的遍历完成,只适用于字符串较...
  • sofia_m
  • sofia_m
  • 2017年11月12日 17:58
  • 80

在字符串中找出第一个只出现一次的字符。经典C语言例题

原题要求:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。思考过程:字符串中字符有很多,只出现一次的也有很多,最直接简单的方法就是记录下每个字符出现的个数,然后从第一...

经典面试题--字符串系列(二)--找出第一个出现一次的字符

题目:在字符串中找出第一个出现一次的字符串,如输入“”

Google笔试题:哈希表的一个意想不到的应用--在字符串中查找第一个只出现一次的字符

1.问题描述 在一个字符串中找到第一个只出现一次的字符。如输入AbAssvfFCCBbhV,则输出v。   2.解题思路 如果按照传统比较的办法,时间复杂度是O(n*n),这显然不是Google面试官...

【google 2006年笔试题】 在一个字符串中找到第一个只出现一次的字符(包括普通汉字)

【google 2006年笔试题】 在一个字符串中找到第一个只出现一次的字符(包括普通汉字)...

找出字符串中第一个只出现一次的字符

/************************************************************************/ /* 找出字符串中第一个只出现一次的字符 详细描述...

找出字符串中第一个只出现过一次的字符和位置

题目:找出字符串中第一个只出现过一次的字符和位置 比如:abcebad 只出现过一次的第一个字符应该是c,第3个。 @左耳朵耗子 大哥说的算法如下:        int[] pos...
  • lazy_p
  • lazy_p
  • 2013年07月31日 20:22
  • 3637

找出一个字符串中,第一个只出现一次的字符

1、题目:找出一个字符串中,第一个只出现一次的字符,如“zzzxccddzzsfdg”
  • wwkaven
  • wwkaven
  • 2014年07月31日 11:19
  • 453
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【笔试题】C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出&#39;b&#39;。
举报原因:
原因补充:

(最多只允许输入30个字)