牛客网算法题JS(一)NC103 反转字符串

59 阅读1分钟

1. 倒序遍历字符串

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 反转字符串
 * @param str string字符串 
 * @return string字符串
 */
function solve( str ) {
    // write code here
    
    if(!str.length) {
       return ""
    }

    let a =[]
    for(let i=str.length-1; i>=0; i--) {
        a.push(str[i])
    }

    const str1 = a.join("")
    console.log(a)
    return str1

}
module.exports = {
    solve : solve
};

2. 交换

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 反转字符串
 * @param str string字符串
 * @return string字符串
 */
function solve(str) {
    // write code here

    if (!str.length) {
        return "";
    }

    let a1 = "";
    let a2 = "";
    let a=[]
    
    for (let i = 0; i < str.length - 1; i++) {
        a1 = str[i]
        a2 = str[str.length -1-i]

        a[str.length-1-i] = a1 
        a[i] = a2
    }
    console.log(a);
    const str1 = a.join("")
    return str1
}
module.exports = {
    solve: solve,
};

优化:

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 反转字符串
 * @param str string字符串
 * @return string字符串
 */
function solve(str) {
    // write code here

    if (!str.length) {
        return "";
    }
    
    let a1 = "";
    let a = []
    for (let i = 0,j=str.length -1; i <= j; i++,j--) {
        a[i] = str[j]
        a[j] = str[i]
    }
    const str1 = a.join("")
    console.log(str1);
    return str1
   
}
module.exports = {
    solve: solve,
};

3.交换

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 反转字符串
 * @param str string字符串
 * @return string字符串
 */
function solve(str) {
    // write code here

    if (!str.length) {
        return "";
    }
 
    let i = 0, j=str.length -1
    let a = new Array(str.length)
    for (; i < j; i++,j--) { 
        a[i] = str[j]
        a[j] = str[i]
    }

    if(str.length % 2 ===1) {
        a[i] = str[i]
    }
    const str1 = a.join("")
    console.log(str1);
    return str1
   
}
module.exports = {
    solve: solve,
};