<mark>第一道题目:</mark>
把两个不相同的字符串变得相同
1修改一个字符,如把a替换为b
2增加一个字符,如把ab变为aeb
3删除一个字符,如把aeb变为ab
比如,对于abcdefg和abcdef两个字符串来说,我们认为可以通过增加和减少个g的方式来达到目的。把每一步操作所需要的次数定义为两个字符串的距离,而这个相似度等于距离+1的倒数。也就是说,“abcdefg"和abcdef的距离为1,相似度为1/2=0.5。然后让写一个算法计算出它们的相似度
输入:
“abcdef”
“abcdefg”
输出:
1/2
public class Main1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str1 = in.nextLine();
String str2 = in.nextLine();
System.out.println(calculateStringDistance(str1,str2));
}
public static String calculateStringDistance(String word1,String word2){
int m = word1.length();
int n = word2.length();
// for(int i =0;i< m;i++){
// if(word1.charAt(i)-'0'>=65 &&word1.charAt(i)-'0'<=90){
// return null;
// }
// }
// for(int i =0;i< n;i++){
// if(word2.charAt(i)-'0'>=65 &&word2.charAt(i)-'0'<=90){
// return null;
// }
// }
int[][] dp = new int[m+1][n+1];
for (int i = 0; i <=m ; i++) {
dp[i][0] = i;
}
for(int j =0;j<=n;j++){
dp[0][j] = j;
}
for (int i = 1; i <=m; i++) {
for(int j =1;j<=n;j++){
if(word1.charAt(i-1)==word2.charAt(j-1)){
dp[i][j] = dp[i-1][j-1];
}else {
dp[i][j] = Math.min(dp[i-1][j]+1,Math.min(dp[i][j-1]+1,dp[i-1][j-1]+1));
}
}
}
String s = String.valueOf(dp[m][n]+1);
if(s =="0"){
return null;
}
return "1"+"/"+s;
}
}
<mark>第二道题目:</mark>
用一维数组存储学号和成绩,并且按照成绩排序
输入描述:
输入第一行包括一个整数N(1=N<=100),代表学生的个数。接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。
输出描述:
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。
如果学生的成绩相同,则按照学号的大小进行从小到大排序。
示例1
3
1 90
2 87
3 92
输出
2 87
1 90
3 92
public class Main2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
Student[] str = new Student[n];
for (int i = 0; i < n; i++) {
int p = in.nextInt();
int q = in.nextInt();
Student s = new Student(p,q);
str[i] = s;
}
for (int i = 1; i < n; i++) {
for (int j = i; j >0 ; j--) {
if(str[j].cj < str[j-1].cj){
Student temp = str[j];
str[j] = str[j-1];
str[j-1] = temp;
}else if(str[j].cj==str[j-1].cj){
if(str[j].no <str[j-1].no){
Student temp = str[j];
str[j] =str[j-1];
str[j-1] = temp;
}
}
}
}
for (int i = 0; i < n; i++) {
System.out.println(str[i].no+" "+str[i].cj);
}
}
static class Student{
int no;
int cj;
public Student(int no,int cj){
this.no = no;
this.cj = cj;
}
}
}
原文地址https://mp.weixin.qq.com/s/7szm1KbpnTbUe8Mgk9d5KA
原创面试复习图(点击菜单获取)