输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student.",则输出"student. a am I"。
进行 2 次不同层次的翻转。第一个层次的翻转,是对整体字符串进行翻转。第二个层次的翻转,是对翻转后字符串中的单词进行翻转。
注意:因为 js 按位重写字符,所以第一次整体字符串翻转后的每个字符,都放入了数组中。
/*** @param {String} sentence*/function reverseSentence(sentence) {// 第一次翻转:每个字符const chars = sentence.split("").reverse();let result = "",last = []; // 保存上一个空格到当前空格之间的所有字符chars.forEach(ch => {// 遇到空格,说明之前的字符组成了单词// 进行第二次翻转:单词if (ch === " ") {result += last.reverse().join("");last.length = 0; // 清空上一个单词}last.push(ch);});result += last.reverse().join("");return result;}/*** 测试代码,输出:* student.a am I*/console.log(reverseSentence("I am a student."));