1.首先学会用数组进行统计

String s = "random";
char[] dict = new char[128];
for (char c : s.toCharArray()) {
    dict[c]++;
}

2.loop方法:

// foreach:用于string
for (char c : str.toCharArray()) { 
    // ...
}

// normal loop:用于双指针
for (int i = 0; i < str.length(); i++) {
    char c = str.charAt(i);
    // ...
}

双指针法loop的基本形式:

int l = 0, r = s.length() - 1 ;
while (l < r) {
    // ..comp
    l++;
    r--;
}

还可以把increment and decrement operators写入循环的判断条件中,注意优先级:prio(++) > prio(<)

int l = -1, r = s.legnth();
while (l++ < r--) {
    // ..comp
}

3.sliding window

// O(nk)
int[] arr = {100,200,300,400};
k = 2;
for (int i = 0; i < arr.length - k + 1; i++) {
    int sum = 0;
    for (int j = 0; j < k; j++) {
        sum += arr[i + j];
    }
}
// or
for (int i = 0; i < arr.length - k + 1; i++) {
    int sum = 0;
    for (int j = i; j < i + k; j++) {
        sum += arr[j];
    }
    System.out.println(sum);
}

results matching ""

    No results matching ""