【发布时间】:2018-07-13 18:55:34
【问题描述】:
我正在尝试解决任何给定两个字符串的 ASCII 距离问题。我编写了代码来检查两个字符串之间的不匹配字符并计算出部分 ascii 距离。但是我仍然需要比较两个字符串(例如,如下所示。)并提出一个可以用这些字符串构建的通用字符串。下面是一个例子。
Let's say s1="elete" s2="leet"
Expected Output:
"let"
在上述示例的情况下,如何识别两个字符串中的多余字符并得出一个通用字符串?
我的代码如下所示,它的作用是比较两个字符串并计算两个字符串之间不匹配字符的 ASCII 分数。
代码:
class Solution {
public int minimumDeleteSum(String s1, String s2) {
int sum = 0;
char[] cstr1 = s1.toCharArray();
char[] cstr2 = s2.toCharArray();
String res = compareCharacters( cstr1,cstr2 );
sum += Integer.parseInt( res.split(",")[1] );
String news1 = res.split(",")[0];
res = compareCharacters( cstr2,cstr1 );
sum += Integer.parseInt( res.split(",")[1] );
String news2 = res.split(",")[0];
/*Would like to add the code here to get all characters that are not allowing to build a common string and get their ASCII values.How do I approach this problem? */
return sum;
}
public String compareCharacters( char[] cstr1, char[] cstr2 ){
int ascii_score = 0;
int flag = 0;
StringBuilder sb = new StringBuilder();
for( int i=0;i<cstr1.length;i++ ){
flag = 0;
for( int j=0;j<cstr2.length;j++ ){
if( cstr1[i] == cstr2[j] )
flag++;
}
if( flag == 0 ){
ascii_score += (int)cstr1[i];
cstr1[i] = '\0';
}
if( flag>0 )
sb.append(cstr1[i]);
}
return sb.toString()+','+Integer.toString(ascii_score);
}
}
如果有任何问题,请告诉我。提前致谢!!
【问题讨论】:
-
寻找 LCS(最长公共子序列)算法
标签: java arrays string algorithm