编程基础之字符串——02找第一个只出现一次的字符

描述

给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。

输入一个字符串,长度小于100000。输出输出第一个仅出现一次的字符,若没有则输出no。样例输入

abcabd

样例输出

c自己做不出,但得到了两个别人的答案;
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 char a[100100];
 6 int main(){
 7     int i,j,k=0,l=0;
 8     gets(a);
 9     l=strlen(a);
10     for(i=0;i<l;i++)
11     {
12         for(j=0;j<l;j++)
13         if(a[i]==a[j]&&i!=j)
14         k=1;
15         if(k==0) {cout<<a[i]; return 0;
16         }
17         k=0;
18     }
19     cout<<"no";
20 }

上面这个更看得懂!

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 int main()
 6 {
 7 char s[110000],b;
 8 int a[27]={0},k,q=0;
 9 gets(s);
10 int w=strlen(s);
11 for(int i=0;i<=w-1;++i)
12 {k=s[i]-96;
13 a[k]+=1;}
14 for(int i=0;i<=w-1;++i)
15 {k=s[i]-96;
16 if(a[k]==1)
17 {b=96+k;q=1;cout<<b;break;}}
18 if(q==0) cout<<"no";
19 return 0;
20 }

这个就看不懂了!最后是我自己的,到现在也没知道是哪错了!

 1 #include<stdio.h>
 2 #include<string.h>
 3 int t,i,j,flag,len;
 4 char a[200000];
 5 int main()
 6 {
 7
 8         gets(a);
 9         len=strlen(a);
10         for(i=0;i<len-1;i++)
11         {
12             flag=1;
13             if(a[i]==‘@‘) continue; //对于相同的,省略;
14             for(j=i+1;j<len;j++) //j=j+1;可以不用循环i之前的字母。
15                 if(a[i]==a[j])
16                 {
17                     a[j]=‘@‘; //相同字母做标记。
18                     flag=0; //不输出a[i];
19                 }
20             if(flag==1)
21             {
22                 putchar(a[i]);
23                 break;
24             }
25         }
26     if(i==len-1)printf("no");
27     return 0;
28 }
时间: 2024-10-17 05:57:18

编程基础之字符串——02找第一个只出现一次的字符的相关文章

02:找第一个只出现一次的字符

02:找第一个只出现一次的字符 总时间限制: 2017-07-1218:36:28 1000ms 内存限制:  65536kB 描述 给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符.如果没有,输出no. 输入 一个字符串,长度小于100000. 输出 输出第一个仅出现一次的字符,若没有则输出no. 样例输入 abcabd 样例输出 c错误答案:9分 #include<stdio.h> #include<iostream> #include<algorithm&

给定一个字符串,找到第一个只出现一次的字符的下标,找不到输出-1。

1. 给定一个字符串,找到第一个只出现一次的字符的下标,找不到输出-1. sample: 输入:"abcdefcba" 输出:3 解法:先遍历字符串,用一个map记录每个字符出现的次数,再次遍历字符串,找到第一个只出现一次的字符,复杂度为O(n). #include <iostream> #include <string> #include <cstring> #include <map> using namespace std; int

【编程题目】在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。

第 17 题(字符串):题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 思路:此题非常容易. 最开始是想开辟一块空间存储每个字符出现的次数. 但转念一想,似乎没有必要. 对每一个字符,都依次和后面的比较,若出现了两次,则检查下一个字符,遇到只出现一次的,直接输出就好了. /* 第 17 题(字符串): 题目:在一个字符串中找到第一个只出现一次的字符.如输入 abaccdeff,则输出 b. 分析:这道题是 2006 年 google 的一道笔试题. */

微软算法100题17 字符串中找到第一个只出现一次的字符

第17 题:题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b 思路:要找出只出现一次的字符,很明显需要统计所有字符出现的次数,然后找出次数为一的那一个,统计次数最先想到的是hashTable,但此题有更好的办法,因为每个char其实对应一个唯一的ASCII值,所以可以构造一个包含所有字符ASCII值的int数组,来映射字符与出现次数的关系,同时一个char是8个字节,总共有256个可能,所以该数组的大小应为256 1 package com.rui.micros

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

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4261992.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b . 题目分析: 求字符串的某个字符出现的次数可以很巧妙的运用split("字符&

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

题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b. 分析:这道题是2006年google的一道笔试题. 下面给我的解法,采用linkedhashmap的有序,即可实现 private void getOne(String str){ LinkedHashMap<String, Object> linked=new LinkedHashMap<String, Object>(); for (char charstr : str.toCharArray

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

题目:在一个字符串中找到第一个只出现一次的字符. 例如: 输入abaccdeff,则输出b 思路剖析: 由于题目与字符出现的次数相关,可以统计每个字符在该字符串中出现的次数. 要达到这个目的,需要一个数据容器来存放每个字符出现的次数. 在这个数据容器中可以根据字符来查找它出现的次数.在常用的数据容器中,哈希表正是这个用途. 由于字符是一个长度为8的数据类型,因此总共有256种可能.于是我们创建一个长度为256的数组,每个字母根据其ASCII码值作为数组的下标对应数组的对应项.而数组中存储的是每个

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

题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 如输入 abaccdeff,则输出 b. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1 我们这里有两种解题思路 1.蛮力法. 遍历数组,每找到一个字符是遍历一下整个数组,看看该字符是否存在数组下表不一致,但是ASSIC码值一样的字符还存在,如果不存在,则是返回该字符,如果存在,则继续遍历.该算法的时间复杂度为O(n

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

偶然在群里看到这个小题, 就用python做了做. 思路就是建一个够大的列表并初始化,把每个字符的asc码作为下标,存到列表里, 然后该位置的值就存字母的出现次数, 最后再迭代原字符串并判断列表值是否等于1. 输出第一个值为1的字符即可. ps:ord()是把字符串转换为它的asc码. 实现如下: def welcome(p_str): bit_map = [0 for x in range(1000)] temp = p_str for a in temp: bit_map[ord(a)] +