[华为]找出字符串中第一个只出现一次的字符

输入描述:

输入一个非空字符串

输出描述:

输出第一个只出现一次的字符,如果不存在输出-1

输入例子:
asdfasdfo
输出例子:
o
 1 //用哈希统计词频
 2 #include<iostream>
 3 #include<string>
 4 using namespace std;
 5 int hasTable[256];
 6
 7 int main()
 8 {    
 9     string s;    
10     while(cin>>s)
11     {        
12         bool flag = false;        
13         for(int i=0;i<256;++i)
14             hasTable[i]=0;        
15         for(int i=0;i<s.size();++i)
16             hasTable[s[i]]++;        
17
18         for(int i=0;!flag && i<s.size();++i)
19         {            
20             if(hasTable[s[i]] == 1)
21             {                
22                 cout<<s[i]<<endl;                
23                 flag = true;                
24                 break;           
25             }        
26         }       
27
28         if(!flag)            
29             cout<<-1<<endl;    
30     }   
31     return 0;
32 }
				
时间: 2024-10-20 22:57:26

[华为]找出字符串中第一个只出现一次的字符的相关文章

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

可以稍微让代码写的好看,不用直接写双循环的话,就可以写成函数的调用,重用性也很高. import java.util.Scanner; public class findOnlyOnceChar { public static boolean FindChar(String pInputString, char pChar){ int count=0; for(int i=0;i<pInputString.length();i++){ if(pInputString.charAt(i)==pCh

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

find the first unique character in  a string and you can just traverse this string only one time. if there is no such character, just return '#' and '#' will not appear in the string, else return the character you find. for example: "aAbBABac",

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

在一个字符串中找到第一个只出现一次的字符. 如输入"abaccdeff",输出'b' 解析: 使用一个数组,记录每个字符出现的次数,最后遍历计数数组,第一个个数为 1 的即为结果. 由于字符char,只有8 bit, 只有255种可能,因此只需声明一个255大小的数组. 遍历一次字符串,遍历2次计数数组:时间复杂度O(n) 空间占用255*int = 512 Byte,是一个固定大小:空间复杂度O(1) 当需要统计某个或某些字符是否出现或出现在字符串中的次数时,可以通过数组实现一个简易

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

// 一个字符串由[a-z]组成,请找出该字符串第一个只出现一次的字母: var str = "354691236549870213654789501287i45465444" var obj = {};//去重 for(var i = 0; i < str.length;i++){ var count = 1: obj[str[i]] = count: } arr = Object.keys(obj): var arr_ = []: for(i in arr){ var num

字符串中第一个只出现一次的字符,如何优化算法使得遍历次数更少?

/** * 只允许遍历一遍字符串 */ public class 找出字符串中第一个只出现一次的字符 { public static void main(String[] args) { // 测试字符串 String str = "asdsacjj"; // 字符串转化成字符 char[] strToChar = str.toCharArray(); int len = strToChar.length;//字符串长度 //hashset用于判断是否出现过 HashSet<Ch

找出字符串中第一个不重复的字符(JavaScript实现)

如题~ 此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. 1 //找出字符串中第一个不重复的字符 2 // firstUniqueChar("vdctdvc"); --> t 3 function firstUniqueChar(str){ 4 var str = str || "", 5 i = 0, 6 k = "", 7 _char = "", 8 charMap = {}, 9 result =

找出字符串中第一个出现次数最多的字符

找出字符串中第一个出现次数最多的字符 详细描述: 接口说明 原型: bool FindChar(char* pInputString, char* pChar); 输入参数: char* pInputString:字符串 输出参数(指针指向的内存区域保证有效): char* pChar:出现次数最多的字符 返回值: false 异常失败 true  输出成功 #include <iostream> #include <string.h> using namespace std; b

《剑指offer》第五十题I:字符串中第一个只出现一次的字符

// 面试题50(一):字符串中第一个只出现一次的字符 // 题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",则输出 // 'b'. #include <cstdio> #include <string> char FirstNotRepeatingChar(const char* pString) { if (pString == nullptr) return '\0'; const int tableSize = 256; //c

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

问题描述:给定一个字符串,假设字符串中只包含字母和数字,求出这个字符串中第一个只出现一次的字符. 分析:这个题目想要做出来还是比较简单的,关键是如何用高效的方法求解.这里我提供两种方法: 解法一:蛮力法.具体思想为,从第一位开始,拿每一位和后面的每一位进行比较,如果没有出现,则直接输出这个字符. 如果出现,则从第二位开始,再和后面的每一位进行比较,依次类推. 算法的时间复杂度为O(n^2). 解法二:哈希法.采用两次扫描即可实现.需要提前构建一个哈希表,把字符当成key值,把出现的次数当成val