有意思的字符串反转(JavaScript)
有意思的字符串反转
如果问你,实现对一串字符串进行反转操作,你的第一反应的方法是?
第一个我想到的是,利用Array.Reverse来实现:
var test = 'Skylor.min'; test.split('').reverse().join('');
但是,一般被问这个问题,都是不能用这个函数的。。。。于是,我想到了堆栈来处理:
1 var stack = []; 2 var result = []; 3 for(var i = 0; i < str.length; i ++ ){ 4 stack.push(str[i]); 5 } 6 for(var j = 0; j < str.length; j ++) { 7 result[j] = stack.pop(); 8 } 9 console.log(result.join(''))
恩,这样也能解决问题,虽然两次循环和栈的开销无疑使这种方法成为开销很大的方法。但使用栈这个数据结构的想法还是非常有价值的。
但是一般这类反转都是可以用递归来写的:
1 function myReverse(str){ 2 3 if(str.length === 1) { 4 return str; 5 } else { 6 7 return myReverse(str.substring(1)) + str[0]; 8 } 9 }
其实,字符串反转还可以这样简单的来用另一个字符串循环赋值:
1 function myReverse(str) { 2 3 var temp = []; 4 for(var i = 0; i < str.length; i ++) { 5 temp[i] = str[str.length - i -1]; 6 } 7 return temp.join(''); 8 9 }
简单的问题,不一样的方法,不一样的思想。
后续我的博客将在我的个人网站 https://skyfi.github.io/ 上进行书写,cnblog更新会迟延,给你带来不便,很是抱歉。