网易有道笔试题(二)
前言
准备面游戏研发岗位,特此对算法进行学习
一、最多回文数
1.问题描述
给定一个字符串s,问该字符串里有多少个长度大于1的连续子串都是回文?回文:正序的文本内容与倒序的文本内容相同,比如 aa,aba
2.解决方案
#include<bits/stdc++.h>
using namespace std;
//算法复杂度O(n)
int main()
{
char str[100001];
int i,j,ans,len;
ans = 0;
cin >> str;
len = strlen(str);
for(i=1;i<len;i++){
//从第二个字符开始遍历
//单轴
for(j=1;j<len;j++){
if(i-j>=0 && i+j<len && str[i-j]==str[i+j]){
ans++;
}else{
break;
}
}
//双轴
for(j=0;j<len;j++){
if(i-1-j>=0 && i+j<len && str[i-1-j]==str[i+j]){
ans++;
}else{
break;
}
}
}
cout << ans << endl;
return 0;
}
二、组合幸运数字
1.问题描述
小易的幸运数字是7,现有一个整数数组 nums,请你找出并返回能被七整除的子集合的最大和,如果找不到则返回-1。
2.解决方案
#include<bits/stdc++.h>
using namespace std;
// 算法复杂度O(n)
int main()
{
int arr[100001