1. 句子逆序
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”。所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
System.out.println(new Main().reverse(str));
}
public String reverse(String sentence){
String[] str=sentence.split(" ");
String res="";
for(int i=str.length-1;i>0;i--)
res+=str[i]+" ";
return res+str[0];
}
}
2. 字符串排序
给定n个字符串,请对n个字符串按照字典序排列。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=Integer.parseInt(sc.nextLine());
int i=0;
ArrayList<String> list=new ArrayList<>();
while(i<n){
list.add(sc.nextLine());
i++;
}
Collections.sort(list);
for(i=0;i<list.size();i++)
System.out.println(list.get(i));
}
}
注:
不去重,只排序。
使用ArrayList存储。排序:Collections.sort(ArrayList al);
3. int型二进制表示中1的个数
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=Integer.parseInt(sc.nextLine());
String str=Integer.toBinaryString(n);
char[] chs=str.toCharArray();
int count=0;
for(int i=0;i<chs.length;i++)
if(chs[i]=='1')
count++;
System.out.println(count);
}
}
注:
1.int转为二进制
String bs = Integer.toBinaryString(value);
4. 购物单
动态规划
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String[] strs=sc.nextLine().split(" ");
int n=Integer.parseInt(strs[0]);
int m=Integer.parseInt(strs[1]);
int[] v=new int[m+1];
int[] p=new int[m+1];
int[] q=new int[m+1];
int i=1;
while(i<=m){
strs=sc.nextLine().split(" ");
v[i]=Integer.parseInt(strs[0]);
p[i]=Integer.parseInt(strs[1])*v[i];
q[i]=Integer.parseInt(strs[2]);
i++;
}
getResult(v,p,q,n,m);
}
public static void getResult(int[] v,int[] p,int[] q,int n,int m){
int[][] res=new int[m+1][n+1];
for (int i = 1; i <=m; i++) {
for(int j = 1; j<=n; j++){
if(q[i] == 0) {
if(v[i] <= j){
res[i][j] = Math.max(res[i-1][j], res[i-1][j-v[i]] + p[i]);
}
}else{
if(v[i] + v[q[i]] <= j){
res[i][j] = Math.max(res[i-1][j], res[i-1][j-v[i]] + p[i]);
}
}
}
}
System.out.println(res[m][n]);
}
}