【算法】字节跳动编程题-双生词

发布时间:2019-06-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【算法】字节跳动编程题-双生词脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

题目描述

双生词

双生词是指满足如下条件的两个字符串:(假设两个字符串分别为S和S’)

1. 字符串长度相同
2. 将字符串S收尾绕成环,再选一个位置切开,顺时针或逆时针能够得到字符串S’

容易得到,若s与S’为双生词,则s’与s也为双生词

给定一批仅有英文小写字母组成的字符串,询问他们之中是否存在双生词

输入描述

首先给出测试组数t,表示一共有多少组数据

对于每组数据,第一行为一个整数n,表示一共有多少个字符串。接下来n行,每行一个字符串

思路

判断str1和str2是否为双生词很简单:
str = str1+str1 //解决收尾相连的问题
比较 str2是否为str中的子串,若是,则返回true
比较 str2.reverser()是否为str中的子串,若是,返回true //解决逆时针循环的问题
否则返回false

样例

输入

3
2
Helloworld
Hdlrowolle
2
Helloworld
Worldhello
2
abcde
Acbde

输出

Yeah
Yeah
Sad

JavaScript实现

const twins = (str1,str2) => {
    print("str1:",str1,"str2:",str2);
    if(str1.length != str2.length){
        return false;
    }
    let str = str1+str1;
    print("str:",str);
    if(str.indexOf(str2) != -1){    
        return true;
    }
    //let str3 = str2.reverse(); //翻转str2
    //字符串翻转
    var newstr = str2.split("").reverse().join("");
    print("new:",newstr);
    if(str.indexOf(newstr) != -1){    
        //print(str,str2);
        return true;
    }
    return false;
}
var m = parseInt(readline());
for(let i = 0; i < m; i++){
    var n = parseInt(readline());
    let arr = [];
    for (let j = 0; j < n; j++) {
        let line2 = readline();
        //arr.push(line2.split(''));//数组
        arr.push(line2);//字符串
    }
    
    let flag = false;
    find:
    for(let j = 0; j < n; j++){
        for(let k = j+1; k < n; k++){
            if(twins(arr[j], arr[k])){
                flag = true;
                print("true");
                break find;
            }
        }
    }
    if(!flag){
        print(false);
    }
}

c++实现
c++实现2
Python实现

JavaScript字符串翻转

var newstr = str2.split("").reverse().join("");

JavaScript二维数组输入

var n = parseInt(readline());
        let arr = [];
        for (let j = 0; j < n; j++) {
            let line2 = readline();
            arr.push(line2.split(''));//数组
            //arr.push(line2);//字符串
    }

JavaScript字符串输入

var n = parseInt(readline());
        let arr = [];
        for (let j = 0; j < n; j++) {
            let line2 = readline();
            //arr.push(line2.split(''));//数组
            arr.push(line2);//字符串
        }

脚本宝典总结

以上是脚本宝典为你收集整理的【算法】字节跳动编程题-双生词全部内容,希望文章能够帮你解决【算法】字节跳动编程题-双生词所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。