c 字符串数组之字符数组种是否所有的字符都只出现过一次

在字符串中查找第一个只出现一次的字符
1.问题描述
在一个字符串中找到第一个只出现一次的字符。如输入AbAssvfFCCBbhV,则输出v。
这是google的一个笔试题,如果用单纯思路时间复杂度为O(n*n),但是不是人家要的答案。此时可以用到哈希表了。因为字串里只包括大小写字母,所以我们可以用一个hash函数将字符转成整型。然后再根据字符装载hash表里,此时复杂度可以降到O(n),但是由于要创建hash数组,空间复杂度必然提高了。
struct Hash
Hash *HashT
//Hash函数
int hashFunction(char ch)
(islower(ch))
if(ch & 'A' && ch & 'Z') return ch-'A';
else return ch-'a'+26;
//装载Hash
void loadHash()
for(int i=0; str[i]; i++)
int tran = hashFunction(str[i]);
if (!HashTable[tran].ch)
&&&&&&&&&&&&
HashTable[tran].ch = str[i];
&&&&&&&&&&&&
HashTable[tran].number = 1;
else HashTable[tran].number++;
int main()
&&& while(cin
HashTable = new Hash[52];
for (int i=0;i&52; i++)
&&&&&&&&&&&
HashTable[i].ch = '\0';
&&&&&&&&&&&
HashTable[i].number = 0;
loadHash();
bool flag =
for (int i=0; str[i]; i++)
&&&&&&&&&&&
if(HashTable[hashFunction(str[i])].number==1)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
cout && str[i] &&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
if(!flag)cout && "没有出现次数为1的字符" &&
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)跟正常的字符串查找是一样的,在字符串中可能出现asc码和汉字两种情况,而一般asc码是0~127,汉字第一个字符最高位是1,所以远大于127
只要我们在遍历的时候,做一个判断,如果该字符在0~127的话 就是asc码,如果大于127 说明该字符跟下个字符组成一个汉字,在进行匹配。
int is_include(const char *a,const char *b)
if(a==NULL||b==NULL)
const int size=(1&&16)-1;
int hash[size]={0};
unsigned short key=*((unsigned short*)a);
++hash[key];
++hash[*a++];
unsigned short key=*((unsigned short*)b);
--hash[key];
--hash[*b++];
for(int i=0;i&++i)
if(hash[i]&0)
def in_iclude(a, b):
aList = {}
bList = {}
while i&len(a):
a_char = a[i]
if ord(a_char)&128:
a_char += a[i+1]
if a_char in aList:
aList[a_char] += 1
aList[a_char] = 1
while j&len(b):
b_char = b[j]
if ord(b_char)&128:
b_char += b[j+1]
if b_char in bList:
bList[b_char] += 1
bList[b_char] = 1
for m in bList:
if m in aList:
if bList[m]&aList[m]:
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
京ICP备号-4
扫一扫,把题目装进口袋如何判断字符串数组是否包含字符串数组中的任意一个元素
[问题点数:80分]
如何判断字符串数组是否包含字符串数组中的任意一个元素
[问题点数:80分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|JavaScript实现将数组中所有元素连接成一个字符串的方法
转载 & & 作者:work24
这篇文章主要介绍了JavaScript实现将数组中所有元素连接成一个字符串的方法,涉及javascript中采用join方法进行数组转化的技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了JavaScript实现将数组中所有元素连接成一个字符串的方法。分享给大家供大家参考。具体如下:
下面的代码演示了JS中如何通过数组对象的join方法将数组元素连接成一个字符串输出
&!DOCTYPE html&
&p id="demo"&
Click the button to join the array elements into a string.
&button onclick="myFunction()"&Try it&/button&
function myFunction()
var fruits = ["Banana","Orange","Apple","Mango"];
var x=document.getElementById("demo");
x.innerHTML=fruits.join();
运行结果如下:
Banana,Orange,Apple,Mango
希望本文所述对大家的javascript程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 字符串转数组 的文章

 

随机推荐