剑指Offer33 第一个只出现一次的字符

 1 /*************************************************************************
 2     > File Name: 33_FirstNotRepeatChar.c
 3     > Author: Juntaran
 4     > Mail: [email protected]
 5     > Created Time: 2016年09月02日 星期五 13时43分20秒
 6  ************************************************************************/
 7
 8 #include <stdio.h>
 9
10 char FirstNotRepeatChar(char* str)
11 {
12     if (str == NULL)
13         return ‘\0‘;
14     int HashSize = 256;
15     int hash[HashSize] = {0};
16
17     char* key = str;
18     while (*key != ‘\0‘)
19     {
20         printf("*key = %d\n", *key);
21         hash[*key] ++;
22         *key ++;
23     }
24
25     key = str;
26     while (*key != ‘\0‘)
27     {
28         printf("%d ", hash[*key]);
29         if (hash[*key] == 1)
30             return *key;
31         key ++;
32     }
33     return ‘\0‘;
34 }
35
36 int main()
37 {
38     char str[] = "adaccbweff";
39     char ret = FirstNotRepeatChar(str);
40     printf("%c\n", ret);
41 }
时间: 2024-10-13 06:21:10

剑指Offer33 第一个只出现一次的字符的相关文章

剑指Offer-33.第一个只出现一次的字符(C++/Java)

题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 分析: 遍历字符串,利用Hashmap将每一个字符出现的值存储起来,然后再遍历字符串,返回第一个字符值为1的索引即可. 程序: C++ class Solution { public: int FirstNotRepeatingChar(string str) { for(int i = 0; i < str.size(); ++

剑指Offer - 第一个只出现一次的字符位置

https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?tpId=13&tqId=11187&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 代码

剑指Offer——第一个只出现一次的字符

1.题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 2.代码实现 public class Solution { public int FirstNotRepeatingChar(String str) { if (str == null || str.length() == 0) { return -1; } char[] chars = str.toCharArray(); j

剑指offer35 第一个只出现一次的字符

class Solution { public: int FirstNotRepeatingChar(string str) { if(!str.size()) return -1; int num[256]={0}; for(int i=0;i<str.size();i++) { num[str[i]]++; } int i=0; while(i<str.size()&&num[str[i]]!=1) i++; if(i==str.size()) return -1; els

剑指Offer--第50题 第一次只出现一次的字符

题目一: 字符串中第一个只出现一次的字符.在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出'b'. 思路 利用数组第一次遍历字符串记录所有字符出现的次数,第二次查找value值为1的为所需要的,这里用数组比较合适,用HashMap会有问题,比如"google",得出的结果会是e,其实应该是l. 按思路写的代码 package solution; public class Solution26 { public static char sho

剑指OFFER之第一个只出现一次的字符(九度OJ1283)

题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1. 样例输入: ABACCDEFF AA 样例输出: 1 -1 解题思路: 首先考虑到时间复杂度,对字符串进行排序或者双层扫描都会到达O(nlong)---O(n^2)的地步. 所以我们考虑额外使用一个数组进行计数,线性时间扫描数组,然后再按照原来的顺序扫描数组找到次数为

【剑指offer】第一个只出现一次的字符

转载请注明出处:http://blog.csdn.net/ns_code/article/details/27106997 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1. 样例输入: ABACCDEFF AA 样例输出: 1 -1 处理字符串中重复或者次数出现等问题,最常用的就是哈希表,用字符串中的字符作为key,

剑指offer (35) 第一个只出现一次的字符 字符哈希表

题目:在字符串中找出第一个只出现一次的字符 题解分析:用空间换时间,使用哈希表,key为字符,value是该字符出现的次数 字符是一个长度为8的数据类型,因此总共只有256种可能,我们可以创建一个长为256的数组, 每个字符根据其ASCII码值作为数组的下标,即哈希表的key,而相应数组位置存储每个字符出现的次数,即哈希表的value char GetFirstOnce(const char* str) { assert(str != NULL); const int hashSize = 25

【剑指Offer】第一个只出现一次的字符位置

问题描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置.若为空串,返回-1.位置索引从0开始. 示例: 输入:sabcdsdf 输出:1 算法描述 定义一个52个元素的整型数组aCount,初始化为0,每个字母(大小写)依次对应一个,记录字母出现的次数: 定义一个52个元素的整型数组aPos,初始化为-1,每个字母(大小写)对应一个,记录字母第一次出现的位置: 每次遍历一个到字母,aCount数组里对应字母加1,判断目前aCount数组里该字