随想录刷题第八天 | 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串

344.反转字符串

    public void reverseString(char[] s) {
        int len = s.length;
        int left = 0, right = len - 1;
        while (left < right) {
            char temp = s[left];
            s[left] = s[right];
            s[right] = temp;
            left++;
            right--;
        }
    }
``
541. 反转字符串II 
public String reverseStr(String s, int k) {
    int len = s.length();
    int start = 0;
    char[] chars = s.toCharArray();
    while(start < len){
        if (start+k < len){
            //k ~2k
            reverseString2(chars,start,start+k-1);
        }else {
            //0~k
            reverseString2(chars,start,len-1);
        }

        start += 2*k;
    }
    return String.valueOf(chars);
}
public void reverseString2(char[] s,int left,int right) {
    while (left < right) {
        char temp = s[left];
        s[left] = s[right];
        s[right] = temp;
        left++;
        right--;
    }
}
剑指Offer 05.替换空格 
public String replaceSpace(String s) {
    StringBuilder sb = new StringBuilder();
    for (char c:s.toCharArray()){
        if (c == ' '){
            sb.append("%20");
        }else {
            sb.append(c);
        }
    }
    return sb.toString();
}
151.翻转字符串里的单词 
public String reverseWords(String s) {
    char[] chars = s.toCharArray();
    StringBuilder sb = new StringBuilder();
    int right = s.length()-1;
    while (chars[right] == ' ') right--;
    while (right>=0){
        if (chars[right] != ' '){
            int end = right;
            while (right>=0 && chars[right] != ' ') right--;
            sb.append(String.copyValueOf(chars,right+1,end-right));
        }else if (chars[right] == ' '){
            while (right>=0 && chars[right] == ' ') right--;
            sb.append(' ');
        }
    }
    //去掉头部空格
    if (sb.charAt(sb.length()-1) == ' ') sb.deleteCharAt(sb.length()-1);
    return sb.toString(); 
}
剑指Offer58-II.左旋转字符串
为尽量高的效率,不能使用字符串拼接
public String reverseLeftWords(String s, int n) {
    char[] chars = s.toCharArray();
    StringBuilder sb = new StringBuilder();
    return sb.append(Arrays.copyOfRange(chars,n,s.length())).append(Arrays.copyOf(chars,n)).toString();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容