汽水瓶_查找两个字符串a,b中的最长公共子串
【摘要】 汽水瓶汽水瓶import java.util.*;public class Main{ public static int fun(int x){ int result = 0;//保存结果数(换的饮料数) int ret = 0; //保存每次没换的空瓶数(余数) while(x>=3){ ret = x%3; result += x/3; ...
汽水瓶
import java.util.*;
public class Main{
public static int fun(int x){
int result = 0;//保存结果数(换的饮料数)
int ret = 0; //保存每次没换的空瓶数(余数)
while(x>=3){
ret = x%3;
result += x/3;
//每次换完饮料 得到的 饮料 + 没换的空瓶 又是新的空瓶数
x = x/3 + ret;
}
//如果两个瓶子可以向老板借!
if(x==2){
result++;
}
return result;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int[] array = new int[10];
int i = 0;
while(sc.hasNext()){
int ret = sc.nextInt();
if(ret==0){
break;
}
array[i++] = ret;
}
for(int j=0;j<i;j++){
System.out.println(fun(array[j]));
}
}
}
查找两个字符串a,b中的最长公共子串
import java.util.*;
public class Main{
public static String dphelp(String str1,String str2){
String result = new String();
int maxLen = 0;//保存最大长度值!
int len1 = str1.length();
int len2 = str2.length();
int[][] dp = new int[len1+1][len2+1];
//初始化: 初始化dp的时候已经全部初始化为0了可以不做处理!
/* for(int i = 0;i< len1;i++){
dp[i][0] = 0;
}
for(int i = 0;i< len2;i++){
dp[0][i] = 0;
} */
//转移方程!
for(int i = 1;i<=len1;i++){
for(int j = 1;j<=len2;j++){
if(str1.charAt(i-1)==str2.charAt(j-1)){
dp[i][j] = dp[i-1][j-1]+1;
if(dp[i][j]>maxLen){
//更新最大值和结果!
maxLen = dp[i][j];
//substring(i,j) // [i,i)
result = str1.substring(i-maxLen,i);
}
}
}
}
return result;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
int len1 = str1.length();
int len2 = str2.length();
if(len1>len2){//保证 str1是较短串!
String tmp = str1;
str1 = str2;
str2 = tmp;
}
System.out.println(dphelp(str1,str2));
}
}
相同题目,简化了 只需要返回最大长度即可!!!
[公共子串计算 ](
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)