反转字符串
描述
写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
示例1
输入:“abcd” 返回值:“dcba”
思路:调用字符串和数组API。首先将字符串分割成字符串数组,然后反转数组,最后将数组中的所有元素放入一个字符串。
function solve( str ) {
return str.split("").reverse().join("");
}
总结: 本题所用的知识点
1. String对象中的方法 split()
split() 方法用于把一个字符串分割成字符串数组。
stringObject.split(separator,howmany)
参数说明
(1)separator:必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
(2)如果把空字符串 (“”) 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
(3)howmany:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
2. Array对象中的reverse()方法
reverse() 方法用于颠倒数组中元素的顺序
arrayObject.reverse()
该方法会改变原来的数组,而不会创建新的数组。
3. Array对象中的join()方法
join() 方法用于把数组中的所有元素放入一个字符串。
arrayObject.join(separator)
参数说明:
(1) separator:可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
(2)如果把空字符串 (“”) 用作 separator,则无分隔符。
注意!!
如果此题的要求是反转语句:
可能会要求反转全部句子,或者反转句子但每个单词不反转。
function ReverseString( str ) {
return str.split("").reverse().join("");
}
ReverseString('I am a student.');
结果为:.tneduts a ma I
function ReverseString( str ) {
return str.split(" ").reverse().join(" ");
}
ReverseString('I am a student.');
结果为:student. a am I
注意这里的区别只有split中的参数为 “” 或者 “ ”
(一个引号内无空格,一个在引号内有空格)
思考原因:
console.log(str.split(" "));//(4) ["I", "am", "a", "student."]
console.log(str.split(""));//(15) ["I", " ", "a", "m", " ", "a", " ", "s", "t", "u", "d", "e", "n", "t", "."]
如果是在V8引擎下,并且是ACM模式,需要自己增加输入输出
var line=readline();
function ReverseString(str){
return str.split(" ").reverse().join(" ");
}
console.log(ReverseString(line));
以上方法太慢
可以只用一行代码解决
console.log(readline().split(" ").reverse().join(" "));
扩展:
function reverseWords(s) {
return s.trim().split(' ').filter(item=>item!='').reverse().join(' ');
};
此处扩展知识点:
1. String对象中的trim()方法
去除字符串的头尾空格
var str = " Runoob ";
alert(str.trim());
//Runoob
trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。
trim() 方法不会改变原始字符串。
trim() 方法不适用于 null, undefined, Number 类型。
返回值: 返回移除头尾空格的字符串。
2. Array对象中的filter()方法
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
array.filter(function(currentValue,index,arr), thisValue)
参数说明:
function(currentValue, index,arr) :必须。函数,数组中的每个元素都会执行这个函数。currentValue:必须。当前元素的值、index:可选。当前元素的索引值、arr:可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue ,“this” 的值为 “undefined”
返回值: 返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
判断回文
描述
给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。
示例1
输入:“absba” 返回值:true
示例2
输入:“ranko” 返回值:false
function judge( str ) {
return str===str.split("").reverse().join("");
}
此处的扩展知识点:
判断两个字符串是否互为旋转
描述
判断两个字符串是否互为旋转,即能否逆置一个字符串得到另外一个字符串。 例如:给定str1= HUANJU 和 str2 = UJNAUH,返回1, 给定str1 = HUANJU 和 str2 = ACBD,返回0. 函数原型:int isRevertStr(const char *str1,const char *str2);
输入描述:
输入为一行,两个字符串str1和str2,以空格分隔.
输出描述:
如果两个字符串是互为旋转输出1,否则输出0
输入:ABCD ABCD
输出:0
var res=readline();
console.log(res===res.split("").reverse().join("")?1:0);