数组排序{升序、降序}HJ101
Java自带排序api
Arrays.sort(arr)是对数组排序;
Collections.sort(List)对列表排序。
构建比较器,匿名内部类的方式。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
Integer[] arr = new Integer[n];
int f;
for(int i=0;i<n;i++){
arr[i] = in.nextInt();
}
f = in.nextInt();
if(f == 0){ //升序排序
Arrays.sort(arr);
OutputArr(arr);
}else if(f == 1){ //降序排序
Arrays.sort(arr, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
OutputArr(arr);
}
}
}
private static void OutputArr(Integer[] arr){
for(Integer i:arr){
System.out.print(i + " ");
}
}
}
截取字符串HJ46
函数substring()
substring(0,i):是截取前i个字符;
substring(i):是从第i个字符开始截取;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String str = in.nextLine();
int len = in.nextInt();
String s = str.substring(0,len);
System.out.println(s);
}
}
}
KMP算法NC149
import java.util.*;
import java.util.regex.*;
public class Solution {
public int kmp (String S, String T) {
int[] next = new int[S.length()];
getNext(S,next);
int count = 0;
for(int i=0,j=0;i<T.length();++i){
if(j>0 && S.charAt(j)!=T.charAt(i)){
j = next[j-1];
}
if(S.charAt(j) == T.charAt(i)){
j++;
}
if(j==S.length()){
count++;
j = next[j-1];
}
}
return count;
}
public void getNext(String s, int[] next) {
int i=1,j=0;
for(;i<s.length();i++){
if(j>0 && s.charAt(i)!=s.charAt(j)){
j = next[j-1];
}
if(s.charAt(i)==s.charAt(j)){
j++;
}
next[i] = j;
}
}
}
总结:
学习了使用Java API进行数组的排序
简单了解了KMP算法