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对一一的翻转这些单词顺序可不在行,你能帮助他么?
题目分析
- 用空格分割字符串,把英语句子分成英语单词。
- 翻转分割后的英语单词。
- 每个单词后边加空格。
写法一:
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,搞定它!
题目分析
- 找出字符串为空,或者字符串长度等于0的时候,输出空字符串;
- n对字符串长度取余;
- 把字符串分割成n前半部分和n后半部分;
- 拼接前半部分和后半部分字符串。
写法一:
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;
}