CSDN竞赛第七期题目解析(欢迎留言解题)
Posted 尔嵘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSDN竞赛第七期题目解析(欢迎留言解题)相关的知识,希望对你有一定的参考价值。
长话短说,一共四道编程题,两小时。写出的最优解能够通过测试用例
一、题目名称:奇偶排序
需求:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
解决:
class Solution
solution(n, arr)
var result;
//<-- 这下面是你的代码
let arr1=arr.filter(item => item%2!==0);
let arr2=arr.filter(item => item%2===0);
result = arr1.concat(arr2);
//这上面是你的代码-->
return result;
var str_0 = readline().trim();
var n = parseInt(str_0);
var str_1 = readline();
var line_list_1 = str_1.trim().split(" ");
var arr = new Array();
for(var i = 0; i < line_list_1.length; i++)
arr[i] = parseInt(line_list_1[i]);
let sol = new Solution();
result = sol.solution(n, arr);
print(result.join(" "));
解析:此题用还是比较简单,用了filter()和cancat即可。此题还可以变化为:奇偶排序一前一后放入进去、奇数升序在左偶数升序在右边
二、题目名称:小艺照镜子
需求:已知字符串str。 输出字符串str中最长回文串的长度。
解决:
class Solution
solution(s)
var result;
let size = s.length;
let start = 0;
let len = 0;
for(let i=0;i<size;i++)
let left=i-1;
let right=i+1;
while(left>=0&&right<size&&s[left]==s[right])
left--;
right++;
if(right-left-1>len)
start=left+1;
len=right-left-1;
for(let i=0;i<size;i++)
let left=i;
let right=i+1;
while(left>=0&&right<size&&s[left]==s[right])
left--;
right++;
if(right-left-1>len)
start=left+1;
len=right-left-1;
result = s.slice(start,start+len).length;
return result;
var str_0 = readline().trim();
var s = str_0;
let sol = new Solution();
result = sol.solution(s);
print(result);
三、题目名称:交换后的or
需求:给定两组长度为n的二进制串,请问有多少种方法在第一个串中交换两个不同位置上的数字,使得这两个二进制串“或”的 结果发生改变?
解决:
四、题目名称:去除整数
需求:已知存在集合A包含n个整数,从1到n。 存在m个整数a[1..m]。 在集合A中去除这m个整数的的倍数。 输出集合中包含 的元素的个数。
解决:
以上是关于CSDN竞赛第七期题目解析(欢迎留言解题)的主要内容,如果未能解决你的问题,请参考以下文章