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);
}