牛客网刷题16(2道题)

31.翻转单词顺序列

题目链接
https://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3?tpId=13&&tqId=11197&rp=5&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking
题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
题目分析

  1. 用空格分割字符串,把英语句子分成英语单词。
  2. 翻转分割后的英语单词。
  3. 每个单词后边加空格。
    写法一:
function ReverseSentence(str)
{
    var arr = str.split(" ");
    var res = ''
    for(var i=arr.length-1;i>=0;i--){
        if(i!=0){
            res +=arr[i]+' ';
        }
        else{
            res +=arr[i];
        }
    }
    return res;
}

写法二:

function ReverseSentence(str)
{
    var arr = str.split(" ").reverse().join(" ");
    return arr;
}

32.左旋转字符串

题目链接
https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec?tpId=13&&tqId=11196&rp=5&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking
题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
题目分析

  1. 找出字符串为空,或者字符串长度等于0的时候,输出空字符串;
  2. n对字符串长度取余;
  3. 把字符串分割成n前半部分和n后半部分;
  4. 拼接前半部分和后半部分字符串。
    写法一:
function LeftRotateString(str, n)
{
    var arr = '';
    if(str == null || str.length == 0 ){
        return "";
    }
    n = n%str.length;
    for(var i=n; i<str.length; i++){
        arr +=str[i];
    }
    for(var i=0;i<n;i++){
        arr +=str[i];
    }
    return arr;
}

写法二:

function LeftRotateString(str, n)
{  
    if(str == null || str.length == 0){
        return "";
    }
    n = n%str.length;
    var arr = str.slice(n)+str.slice(0,n);
    return arr;    
}
发布了22 篇原创文章 · 获赞 0 · 访问量 361

猜你喜欢

转载自blog.csdn.net/weixin_41796393/article/details/104322335