返回信息流题目链接:http://discuss.acmcoder.com/topic/58d66c635ad79cff4d696b5d
第二题,偶串问题,赛码网已经给出了c++版的解答,使用了map,JavaScript里可以使用array实现字典操作,我就写了一版,但这样最大下标只能是32位,无法满足题目要求,通过率只有40%。。有没有哪位大神能写出一版js的??
我写的如下:
```JavaScript
var str=read_line();
len=str.length;
var dic=new Array();
for(i=0;i<=100000;i++){
dic[i]=0;
}
dic[0]=1;
var cur=0;
var ans=0;
for(var i=0;i<len;i++){
var x=str[i].charCodeAt()-'a'.charCodeAt();
cur ^= (1<<x);
ans+=dic[cur];
dic[cur]++;
}
print(ans);
```
当出现字符'p'以后的字符时结果就是NAN。
这是一条镜像帖。来源:北邮人论坛 / java-script / #1861同步于 2017/3/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖
【问题】360春招试题 偶串
jy11152721
2017/3/26镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
借楼求debug,我用Python写的通过率为70%,然后翻译成js,卡在了'abbc'上,但是本地运行结果是正确的啊,求大神给debug一下。
```python
def OuChuan(subStr):
d = dict()
for i in range(0, len(subStr)):
if subStr[i] in d:
d[subStr[i]] += 1
else:
d[subStr[i]] = 1
num = 0
for a in d:
num += d[a]%2
if num == 0:
return True
else:
return False
def Count(aStr):
answer = 0
length = len(aStr)
if length == 2 and aStr[0] == aStr[1]:
return 1
for i in range(2, length+1):
if i % 2 == 0:
for index in range(0, length-i+1):
if OuChuan(aStr[index:index+i]):
answer += 1
else:
continue
return answer
#!/usr/bin/env python
# coding=utf-8
# Python使用的是2.7,缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用
while 1:
a=[]
s = raw_input()
# raw_input()里面不要有任何提示信息
if s != "":
print Count(s)
else:
break
```
```JavaScript
'--use-strict'
//JavaScript
function EvenSubStr(subStr){
var m = {};
for(var i=0;i<subStr.length;i++){
if(subStr[i] in m)
m[subStr[i]] += 1;
else
m[subStr[i]] = 1;
}
var num = 0;
for(var key in m)
//console.log(m[key]);
num += m[key]%2;
//console.log(num);
if(num===0)
return 1;
else
return 0;
}
function Count(aStr){
var answer = 0;
var len = aStr.length;
if(len===2 && aStr[0] === aStr[1])
return 1;
for(var i = 2;i<=len;i++){
if (i % 2 === 0)
for(var index=0;index<=len-i;index++){
if(EvenSubStr(aStr.substring(index, index+i)) === 1)
answer = answer + 1;
}
}
return answer;
}
var line;
while(line = read_line()){
line = line.split(' ');
print(Count(line));
}
```
是的。。。
【 在 logsin (github/shangfeiSF) 的大作中提到: 】
: 你只是把代码翻译了一遍啊
通过『我邮2.0』发布
Count里内层的for循环不对吧,index=i开始吧,还有read_line是什么?,line就是个字符串么
【 在 Marcovaldo 的大作中提到: 】
: 借楼求debug,我用Python写的通过率为70%,然后翻译成js,卡在了'abbc'上,但是本地运行结果是正确的啊,求大神给debug一下。
:
: ```python
read_line是平台给定的一个获取一行输入的函数
【 在 logsin (github/shangfeiSF) 的大作中提到: 】
: Count里内层的for循环不对吧,index=i开始吧,还有read_line是什么?,line就是个字符串么
【 在 logsin 的大作中提到: 】
: Count里内层的for循环不对吧,index=i开始吧,还有read_line是什么?,line就是个字符串么
没错,第一层循环中的i是子串的长度(计只算i为偶数的情况,奇数是必定不是偶串),第二层循环中的index是子串在串中的起始位置,取值应该是(0,aStr.length-i+1)(取不到aStr.length-i+1)。