5题目描述:

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

解析:

1.StringBuilder方法的使用
2.定义一个新的字符串ans,然后去遍历字符串s,把空格换成%20,其余的直接添加到字符串ans里
3.最后返回字符串ans即可

Java:

public String replaceSpace(String s) {
        StringBuilder ans = new StringBuilder();
        for(int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                ans.append("%20");
            } else {
                ans.append(s.charAt(i));
            }
        }
        return ans.toString();
    }

JavaScript:

var replaceSpace = function(s) {
    let res = s.replace(/\s/g, "%20");
    return res;
};

58I题目描述:

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。

解析:

1.首先删除首位空格,分割字符串,定义一个StringBuilder
2.然后倒序遍历单词列表,遇到单词则跳过,将单词拼接至StringBuilder
3.最后转化为字符串,删除尾部空格,并返回。

Java:

public String reverseWords(String s) {
        String[] str = s.trim().split(" ");
        StringBuilder res = new StringBuilder();
        for(int i = str.length - 1; i >= 0; i--) {
            if(str[i].equals("")) {
                continue;
            }
            res.append(str[i] + " ");
        }
        return res.toString().trim();
    }

JavaScript:

var reverseWords = function(s) {
    const str = s.split(' ');
    const res = [];
    for(let i = str.length - 1; i >= 0; i--) {
        str[i] && res.push(str[i]);
    }
    return res.join(' ');
};

58II题目描述:

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

解析:

1.题意可以理解为反转字符串,双指针法
2.先把字符串s转换成字符数组,然后以n数组下标为分界线,(0,n-1)为前半段,(n,chars.length-1)为后半段
3.先把两段分别反转,然后再整体反转一下
4.最后返回字符串即可

Java:

public String reverseLeftWords(String s, int n) {
        char[] chars = s.toCharArray();
        reverse(chars, 0, n - 1);
        reverse(chars, n, chars.length - 1);
        reverse(chars, 0, chars.length - 1);
        return new String(chars);
    }
    private void reverse(char[] arr, int i, int j) {
        while(i < j) {
            char temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }

JavaScript:

var reverseLeftWords = function(s, n) {
    let res = '';
    for(let i = n; i < n + s.length; i++) {
        res += s[i % s.length];
    }
    return res;
};