算法题:给定一个字符串,字符串中包含一些空格,将字符串中由空格隔开的单词反序,并反转每个字符的大小写。

神策算法题

题目描述:对于一个长度为 n 字符串,首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写,比如"Hello World"变形后就变成了"wORLD hELLO"。
思路分析:
1. 将字符串转换成字符串数组,并反转[‘World’, ‘Hello’]。
2. 上述结果中的每一个字符提取到字符串数组中。
3. 遍历整个字符串数组,根据其中字符的Unicode值来判定大小写,如果是97-122之间,则表示为小写,将其转换成大写,如果是65-90之间,则表示为大写,转换成小写。将转换后的字符添加到result结果数组中。在每个单词结束后,添加空格分隔。
4. 遍历完成之后,将最后一个空格删掉pop()。
5. 将result结果数组转换成字符串格式。
可使用C++、Java、JavaScript、Python等语言,这里使用最简便的JavaScript脚本语言。
let n = "Hello World"

var ans = function(str){
    var result = [] 
    // 把字符串转换成字符串数组,并反转['World', 'Hello']
    var s = n.split(' ').reverse()
    // 将s中的每一个字符串转换成字符串数组
    var ss = []
    //[['W', 'o', 'r','l', 'd'], ['H','e', 'l', 'l', 'o']]
    for(var i = 0; i< s.length; i++){
        ss.push(s[i].split(""))
    }
    for(let i = 0;i<ss.length;i++) {
        for(let j = 0; j < ss[i].length; j++){
            // 这里需要将ss[i]变成字符串,查看字符串ss[i]中j的Unicode值
            unicodeNum = ss[i].join("").charCodeAt(j)
            // 如果是小写,转换成大写,并添加到result数组中
            if (122 >= unicodeNum && unicodeNum >= 97){
                result.push(ss[i][j].toUpperCase())
            }
            // 如果是大写,转换成小写,并添加到result数组中
            if(65 <= unicodeNum && unicodeNum <= 90){
                result.push(ss[i][j].toLowerCase())
            }
        }
        // 每个单词之后加一个空格
        //['w', 'O', 'R', 'L','D', ' ', 'h', 'E','L', 'L', 'O', ' ']
        result.push(" ")
    }
    // 遍历完成之后,将数组最后一个空格元素删掉。
    // pop()方法用于删除数组的最后一个元素并返回删除的元素。打印的话会打印删除元素。
    result.pop()
    // 返回字符串格式
    return result.join("")
}

console.log(ans(n))