【笔试题】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

 

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

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析: 一般方法是使用每个字符间都比较一次,算法复杂度为o(n^2) 可以使用空间换时间的方法,字符...
  • hhh3h
  • hhh3h
  • 2014年03月09日 13:35
  • 1064

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

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

在一个字符串中找到第一个只出现一次的字符。如输入:abcdab,则输出:c。

题目:在一个字符串中找到第一个只出现一次的字符。如输入:abcdab,则输出:c。 分析:看到这道题时,有两种思路: (1)最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时...
  • yanxiaolx
  • yanxiaolx
  • 2016年06月02日 22:47
  • 1665

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

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

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

在字符串中查找第一个只出现一次的字符。例如输入字符串"abaccdef",输出b,     分析:(1)创建一个数组,并初始化数组,                       (2)遍历字符串,...
  • xulu_258
  • xulu_258
  • 2015年05月26日 20:32
  • 950

在字符串(字母)中找出第一个只出现一次的字母

第一个只出现一次的字符:在字符串中找出第一个只出现一次的字母。函数支持汉字查询,但不知道这个函数在实际应用有什么用。 在编程中发现直接 这样 arr[字符串]是设定对象属性,不是访问数组。var fi...
  • 6rl
  • 6rl
  • 2016年11月01日 15:42
  • 585

【c语言】第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符

// 第一个只出现一次的字符题目:在字符串中找出第一个只出现一次的字符。 // 如输入“abaccdeff”,则输出’b’。 #include #include char find...
  • zhaoyaqian552
  • zhaoyaqian552
  • 2015年07月06日 20:45
  • 1539

第一个只出现一次的字符 java实现

题目描述 在一个字符串(1 分析:由于题目与字符出现的次数相关,我们是不是可以统计每个字符在该字符串中出现的次数,要打到这么目的,我们需要一个数据容器来存储每个字符在字符串中出现的次数,这...
  • qq_23217629
  • qq_23217629
  • 2016年10月09日 13:18
  • 1402

【华为OJ】找出字符串中第一个只出现一次的字符

找出字符串中第一个只出现一次的字符 详细描述: 接口说明 原型: bool FindChar(char* pInputString, char* pChar); 输入参数: char* pInputS...
  • haoxiaodao
  • haoxiaodao
  • 2015年04月20日 20:22
  • 706

输出第一个仅出现一次的字符

字符串 第10题 【描述】 给定t个字符串,这个字符串只可能由26个小写字母组成。 请你找到第一个仅出现一次的字符,如果没有符合要求的字符,就输出“no”。 【输入】 第一行是正整数n,接...
  • u011545923
  • u011545923
  • 2014年12月04日 12:21
  • 1847
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【笔试题】C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出&#39;b&#39;。
举报原因:
原因补充:

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