Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

js反转字符串 #1

Open
HecateDK opened this issue Feb 14, 2017 · 0 comments
Open

js反转字符串 #1

HecateDK opened this issue Feb 14, 2017 · 0 comments

Comments

@HecateDK
Copy link
Owner

js反转字符串

例如:给你一个字符串“Hello Word!”,让你通过JavaScript的方法,将其变成"!droW olleH"。

解决思路

把提供的字符串转化成一个数组,然后把数组反向显示,最终显示的依旧是一个字符串。

解决方法一:使用内置函数

让一个字符串反向显示可以用以下三种方法配合:

  • String.propototype.split() 将一个字符串对象的每个字符拆出来,并且将每个字符串当成数组的每个元素。
  • Array.prototype.reverse() 用于改变数组,将数组中的元素倒序排列,第一个数组元素成为最后一个数组元素,最后一个变成第一个。
  • Array.prototype.join() 将数组中的所有元素边接成一个字符串。

例如:

function reverseString(str){
	// 第一步,使用split()方法,返回一个新数组
	var splitString = str.split("");
	// 第二步,使用reverse()方法创建一个反转的新数组
	var reverseArray = splitString.reverse();
	// 第三步,使用join()方法将数组的每个元素连接在一起,组合成一个新字符串
	var joinArray = reverseArray.join("");
	// 第四步,返回反转后的新字符串
	console.log( joinArray );
	return joinArray;
}
reverseString( 'hello word' );   // "dlrow olleh"

将上面的方法简化一下,就可以写成:

function reverseString(str){
      return str.split("").reverse().join("");
}
reverseString( 'hello word' );
解决方法二:使用一个循环遍历将字符串反转

使用一个for或者while循环把原字符做一个递减遍历,然后将遍历的字符串重新合并成一个新字符串:

  1. 首先,创建一个空的字符串用来存储新创建的字符串;
  2. 使用for/while循环,从str.length-1开始做递减遍历,直到i=0
  3. str.length-1对应的是字符串最后一个字符
  4. 返回反转的字符串
function reverseString1(str){
	var newString = "";
	for( var i = str.length - 1 ; i >= 0 ; i-- ){
		newString += str[i];
	}
	console.log( newString );
	return newString;
}
reverseString1( 'hello word' );
// 使用while循环
function reverseString2(str){
      var newString = "";
      var i = str.length-1;
      while( i>0 ){
            newString += str.substring( i-1,i );
            i--;
      }
      return newString;
}
reverseString2( 'hello word' );

substring() 返回字符串两个索引之间的字串。

解决方法三:使用一个递归将字符串反转

先来回顾一下String.prototype.substr()String.prototype.charAt()方法:
substr()方法返回字符串从指定位置开始到指定长度的子字符串。
chartAt()方法返回字符串指定位置的字符。
使用递归来进行字符串反转:

function reverseString3(str){
	if( str === "" )  return ""
	else {
		console.log( reverseString3( str.substr(1) ) + str.charAt(0) );  // 这里打印出来会有神奇的事情发生
		return reverseString3( str.substr(1) ) + str.charAt(0);
	}
}
reverseString3( "hello word" );

把上面的方法简写一下,为:

function reverseString4(str) { 
	return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0); 
} 
reverseString4("hello word"); 

还有更多的解决方法,可参考JavaScript算法练习:字符串反转

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant