如何在javascript中旋转字符串并在不使用任何javascript函数的情况下打印字符串的旋转版本 ,只有for
循环。
给出一个字符串:
"hell"
输出:
"lhel", "llhe", "ellh", "hell"
我尝试过但没有成功
var str1 = "hell";
let i = 0;
let len = str1.length - 1;
let temp;
for (let j = 0; j < len+1; j++) {
temp = str1[len]
while (i < len) {
console.log(str1[i]);
temp += str1[i];
i++;
}
console.log(temp);
//console.log(typeof temp, typeof str1)
str1 = temp;
}
答案 0 :(得分:2)
您快到了!缺少一件事,i
应该在for
循环的每次迭代中重置,否则,while (i < len)
将仅被播放一次:
var str1 = "hell";
let len = str1.length - 1;
let temp;
for (let j = 0; j < len+1; j++) {
let i = 0; // <-------------------- notice this
temp = str1[len]
while (i < len) {
//console.log(str1[i]);
temp += str1[i];
i++;
}
console.log(temp);
//console.log(typeof temp, typeof str1)
str1 = temp;
}
答案 1 :(得分:2)
您可以进行嵌套循环,将字符放在i
和j
的位置,并使用reminder operator %
来防止字符超出字符串。
var string = "hell",
i, j,
temp;
for (i = 0; i < string.length; i++) {
temp = '';
for (j = 1; j <= string.length; j++) temp += string[(i + j) % string.length];
console.log(temp);
}
答案 2 :(得分:2)
您可以尝试此方法。基本上,您有两个循环,第一个循环(i)用于可能,第二个循环用于移位
var strValue = "hell";
var temp;
for(var i = 0; i < strValue.length; i++){
temp = "";
for(var j = 1; j < strValue.length; j++){
temp += strValue[j];
}
temp += strValue[0]
strValue = temp;
console.log(strValue)
}
答案 3 :(得分:0)
在第一个循环中,添加索引大于移位步长(在本例中为i)的所有符号。
在第二个循环之后添加休息符号。
const str = 'hello';
for (let i = 0; i < str.length; i++) {
let shifted = '';
for (let j = i; j < str.length; j++) {
shifted += str[j];
}
for (let j = 0; j < i; j++) {
shifted += str[j];
}
console.log(shifted);
}
答案 4 :(得分:0)
我知道这已经被回答了,这就是我会这样做的方式。
也许你可以从中学到东西。
false
答案 5 :(得分:-2)
let str = 'hell';
for(let i=0;i<str.length;i++){
str = str.substring(1,str.length) + str[0];
console.log(str);
}