题解 | #字符串变形#

字符串变形

http://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param s string字符串 
 * @param n int整型 
 * @return string字符串
 */

/**
 * 解法一:正则
 * 时间复杂度:O(n)
 * 空间复杂度:O(n)
 */
export function trans(s: string, n: number): string {
    let res: string = ''
    if (s.length === 0 || n === 0) return res
    
    // 翻转
    const revStrArr: string[] = s.split(' ').reverse()
    const revStr: string = revStrArr.join(' ')
    
    // 大小写转换
    const reg1 = /[a-z]/
    const reg2 = /[A-Z]/
    for (let i = 0; i < revStr.length; i++) {
        if (reg1.test(revStr[i])) {
            res += revStr[i].toUpperCase()
        } else if (reg2.test(revStr[i])) {
            res += revStr[i].toLowerCase()
        } else {
            res += ' '
        }
    }
    
    return res
}

/**
 * 解法二:charAtCode(0)性能更好,推荐
 * 时间复杂度:O(n)
 * 空间复杂度:O(n)
 */
export function trans(s: string, n: number): string {
    let res = ''
    if (s.length === 0 || n === 0) return res
    
    // 翻转
    const revStrArr = s.split(' ').reverse()
    const revStr = revStrArr.join(' ')
    
    // 大小写转换
    for (let i = 0; i < revStr.length; i++) {
        const code = revStr[i].charCodeAt(0)
        if (code >= 97 && code <= 122) {
            res += revStr[i].toUpperCase()
        } else if (code >= 65 && code <= 90) {
            res += revStr[i].toLowerCase()
        } else {
            res += ' '
        }
    }
    
    return res
}
全部评论

相关推荐

01-29 15:45
已编辑
华中科技大学 前端工程师
COLORSN:可以试一下,小厂看技术栈是不是很落后,如果太拉胯就别去,个人认为有实习氛围比你自己琢磨要高效不少,然后就是小厂其实也有可能会问的很难,这都比较难说,还是看自己项目含金量够不够,寒假还能不能推进学习再选择,毕竟去实习过年就10天假了
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务