【牛客题霸】NC103反转字符串
反转字符串
http://www.nowcoder.com/questionTerminal/c3a6afee325e472386a1c4eb1ef987f3
方法一 通过API反转
/** * 反转字符串 * @param str string字符串 * @return string字符串 */ function solve( str ) { // 先把字符串拆成数组 // 反转数组 // 再把数组合成字符串 return str.split("").reverse().join(""); } module.exports = { solve : solve };
方法二 构造新字符串
/** * 反转字符串 * @param str string字符串 * @return string字符串 */ function solve( str ) { // 获得字符串长度 let length = str.length; // 构造新的字符串 let newStr = ""; // 从字符串后面读取字符串每一个字符 for( let i=length-1;i>=0;i-- ){ // 把遍历得到的字符串塞到新字符串中 newStr += str[i]; } // 返回字符串 return newStr; } module.exports = { solve : solve };
方法三 双指针
class Solution { public: /** * 反转字符串 * @param str string字符串 * @return string字符串 */ string solve(string str) { // 获得字符串长度 int len = str.length(); // 左指针为0,右指针为最后一个字符的索引 int left=0, right=len-1; while( left<right ){ // 左边和右边的值进行交换 // 左指针自增、右指针自减 str[left] += str[right]; str[right] = str[left] - str[right]; str[left++] -= str[right--]; } return str; } };