首页 > 代码库 > 1485 字符配对
1485 字符配对
codevs——1485 字符配对
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 青铜 Bronze
题目描述 Description
在一个字符串中,把相同的字符两两删除,求剩下字符的个数。
例如:字符串asasda,
首先删除两个‘a‘,得到字符串‘ssda‘。
然后删除两个‘s‘,得到字符串‘da‘。
此时,字符串中没有了相同的字符,删除结束,剩下个数为2。
输入描述 Input Description
一个字符串,含义如描述所示。
输出描述 Output Description
字符串中剩余字符的个数。
样例输入 Sample Input
asasda
样例输出 Sample Output
2
数据范围及提示 Data Size & Hint
字符串的长度<=1,000,000(用ansistring)。
字符串中只会包含小写字母。
只要求输出剩余的个数。
分类标签 Tags 点此展开
字符串处理 模拟
天,我恶心的代码竟然过了。。(⊙o⊙)…
代码:
#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#define N 1000000using namespace std;char ch[N];int n,a[N],ans;int main(){ cin>>ch; int n=strlen(ch); for(int i=0;i<n;i++) { if(ch[i]==‘a‘) a[1]++; if(ch[i]==‘b‘) a[2]++; if(ch[i]==‘c‘) a[3]++; if(ch[i]==‘d‘) a[4]++; if(ch[i]==‘e‘) a[5]++; if(ch[i]==‘f‘) a[6]++; if(ch[i]==‘g‘) a[7]++; if(ch[i]==‘h‘) a[8]++; if(ch[i]==‘i‘) a[9]++; if(ch[i]==‘j‘) a[10]++; if(ch[i]==‘k‘) a[11]++; if(ch[i]==‘l‘) a[12]++; if(ch[i]==‘m‘) a[13]++; if(ch[i]==‘n‘) a[14]++; if(ch[i]==‘o‘) a[15]++; if(ch[i]==‘p‘) a[16]++; if(ch[i]==‘q‘) a[17]++; if(ch[i]==‘r‘) a[18]++; if(ch[i]==‘s‘) a[19]++; if(ch[i]==‘t‘) a[20]++; if(ch[i]==‘u‘) a[21]++; if(ch[i]==‘v‘) a[22]++; if(ch[i]==‘w‘) a[23]++; if(ch[i]==‘x‘) a[24]++; if(ch[i]==‘y‘) a[25]++; if(ch[i]==‘z‘) a[26]++; } for(int i=1;i<=n;i++) if(a[i]%2) ans++; printf("%d",ans);}
你说我是不是傻啊,弄得那么麻烦,完全可以减一个96,就出来了啊!
精炼版
#include<iostream>using namespace std;int main(){ int b,a[27]= {0},key=0; string s; getline(cin,s); for(b=0; b<s.length(); b++) { a[(int)s[b]-96]++; if(a[(int)s[b]-96]==2)a[(int)s[b]-96]=0;//遇2清零 } for(b=1; b<=26; b++) key=key+a[b];//出现的是单数答案++ cout<<key<<endl; return 0;}
1485 字符配对
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。