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

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

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

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

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

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

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

1、题目:找出一个字符串中,第一个只出现一次的字符,如“zzzxccddzzsfdg”

华为OJ题目(一):找出字符串中第一个出现一次的字符

#include #include using namespace std; char Findchar(char* pInputString) { if (!pInputString...

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

题目:在字符串中找出第一个只出现一次的字符。如输入 “abaccdeff”,则输出b。 思路分析: (1)由于题目与字符出现的次数相关,那么是不是可以统计每个字符在该字符串中出现的次数?要达到这个...

第十七题(找出字符串中第一个只出现一次的字符)

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006 年go

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

转载:http://zhedahht.blog.163.com/blog/static/25411174200722191722430/ 题目:在一个字符串中找到第一个只出现一次的字符。如输入aba...

只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符

find the first unique character in  a string and you can just traverse this string only one time. if...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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