一道JavaScript测试题:判断字符串是否为偶串~

最近参加考试,遇到一道JavaScript编程题,因为时间关系当场放弃了。事后重新分析,发现其核心逻辑功能是:判断字符串是否为偶串。


题中对偶串的定义:如果一个字符串由两个相同字符串连接而成,就称这个字符串是偶串。例如”abcabc"和"pppppp"是偶串,但是”ababab"和“xyzxy”却不是。


个人思路:先将字符串保存到数组里面,再将数组从中间截半分成两个子数组。最后,判断两个子数组的内容是否完全相等。

问题来了,JS代码如何写腻~或者大家有更好的思路不~

==================================================
附:题目内容:如果一个字符串由两个相同字符串连接而成,就称这个字符串是偶串。例如”abcabc"和"pppppp"是偶串,但是”ababab"和“xyzxy”却不是。现在提供一个只包含小写字母的偶串s,你可以从字符串s的末尾删除1或者多个字符,但必须保证删除之后的字符串还是一个偶串。问题:编写JS代码,以获得删除之后得到最长偶串长度是多少。

输入描述:
包括一个字符串s,字符串长度length(2=<length=<200。保证s是一个偶串且由小写字母构成。
输出描述:
输出一个整数,表示删除之后能得到的最长偶串

阅读 5k
5 个回答

判断是否偶字符串

function isEven(s){

    var half = s.length/2;
    console.log(s.slice(0,half) === s.slice(half));
}

isEven('abcabc')
function test(str) {
    str = str.toUpperCase();
    var half = str.length / 2;
    if (str.length % 2 !== 0 || str.slice(0, half) !== str.slice(half)) {
        test(str.substring(0, str.length - 1));
    } else {
        console.log(str.length || '不包含偶串');
    }
}

test('DSSASASSASAEFO');
var str = "aabbccaabbcc";
function oc(str) {
    var length = str.length;
    if(length !== 0) {
        if(str.slice(0, length/2) !== str.slice(length/2)) {
            oc(str.slice(0, length-2));
        } else {
            console.log(length);
        }
    } else {
        console.log(length);
    }
}
oc(str.slice(0, str.length-2));

供参考

function lenEvenSubStr (str) {
  for (var e = str.length / 2 - 1; e > 0; e -= 1) {
    for (var s = 0; s < e; s += 1) {
      if (str[s] !== str[e + s]) { break }
    }
    if (s === e) { return e }
  }
  return 0
}

function test(str){

var reg=/(\w{2})\1/;

if(reg.test(str)){
    console.log("偶串");
}else{
    console.log("不是偶串");
}

};

var str="ababc";

test(str);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题