Day 8 | 344. 反转字符串 | 541. 反转字符串 II | 54. 替换数字

180 阅读1分钟

344. 反转字符串 - 力扣(LeetCode)

class Solution {
    public void reverseString(char[] s) {
        char  a = ' ';
        for(int i = 0;i<s.length/2;i++){
            a = s[i];
            s[i] = s[s.length-1-i];
            s[s.length-1-i] = a;
        }
    }
}

这个写法有缺陷,当数组局部翻转时失效。替换为:

public void reverse(char[] s,int start,int end) {
        char  a = ' ';
        while(start<end){
            a = s[start];
            s[start++] = s[end];
            s[end--] = a;
        }
    }

541. 反转字符串 II - 力扣(LeetCode)

class Solution {
    public String reverseStr(String s, int k) {
        int n = s.length();
        char[] arr = s.toCharArray();
        for (int i = 0; i < n; i += 2 * k) {
            reverse(arr, i, Math.min(i + k, n) - 1);
        }
        return new String(arr);
    }
    public void reverse(char[] s,int start,int end) {
        char  a = ' ';
        while(start<end){
            a = s[start];
            s[start++] = s[end];
            s[end--] = a;
        }
    }
}

这个写法就很简洁优美。

54. 替换数字(kamacoder.com)

import java.util.*;

class Main{
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        char[] ch = s.toCharArray();
        StringBuilder sb = new StringBuilder();
        for(char c:ch){
            if(c>='a' && c<='z'){
                sb.append(c);
            }else{
                sb.append("number");
            }
        }
        
        System.out.println(sb.toString());
    }
}

今天的题并不难,刚开始写时有点状态不好。有点厌烦,调整、适应。跟上刷题的节奏。