360 3月25日笔试

Posted 此剑之势愈斩愈烈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了360 3月25日笔试相关的知识,希望对你有一定的参考价值。

偶串题意:

一个字符串所有字符出现次数都是偶数,则称它为偶串。

现在给你一个字符串,你需要输出该字符串中包含多少偶串。这里的字串必须是原串中连续的一段。

比如一个n长度的字符串有n*(n+1)/2个字串

想了一个小时无奈敲了个n^2的上去,90%past

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
using namespace std;
const int maxn=100008;
string s;
int solve(int x,int y)
{
	int a[26]={0};
	int sum=0,ans=0;
	for(int i=x;i<y;i++)
	{
		int p=s[i]-‘a‘;
		a[p]++;
		if(a[p]%2==0)
			sum--;
		else
			sum++;
		if(sum==0)	ans++;
	}
	if(x+1<y)
	ans+=solve(x+1,y);
	return ans;
}
int main()
{
	while(cin>>s)
	{
		int len=s.length();
		int ans=solve(0,len);
		printf("%d\n",ans);
	}
	return 0;
 } 

 

结果一看答案,黑人问号??

#include <bits/stdc++.h>
#define maxn 100009
using namespace std;
char s[maxn];
map<int,int>mp;
int n;
int main(){
    scanf("%s",s);
    n = strlen(s);
    mp[0] = 1;
    int cur = 0;
    long long ans = 0;
    for(int i = 0; i < n; i++){
        int x = s[i] - ‘a‘;
        cur ^= (1 << x);
        ans += mp[cur];
        mp[cur]++;
    }
    cout << ans << endl;
    return 0;
}

 mp[cur]的值是一系列的等差数列,因为 最后的答案肯定是一些等差数列的和的。。这个方法是真的巧妙哇

它用位运算存储当前状态,如果有状态重复出现就累加

后面一个题都没有看。。

以上是关于360 3月25日笔试的主要内容,如果未能解决你的问题,请参考以下文章

今日头条 2018 AI Camp 6 月 2 日在线笔试编程题第二道——两数差的和

微众银行2020前端实习生笔试总结

2014年全年考试计划

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

腾讯测试工程师笔试体会

3月25日 JavaScript