Problem Statement
If X and Y are two strings of equal length N, then the difference between them is defined as the number of indices i where the i-th character of X and the i-th character of Y are different. For example, the difference between the words "ant" and "art" is 1.
You are given two strings, A and B, where the length of A is less than or equal to the length of B. You can apply an arbitrary number of operations to A, where each operation is one of the following:
Choose a character c and add it to the beginning of A.
Choose a character c and add it to the end of A.
Apply the operations in such a way that A and B have the same length and the difference between them is as small as possible. Return this minimum possible difference.
Definition
Class:
DifferentStrings
Method:
minimize
Parameters:
string, string
Returns:
int
Method signature:
int minimize(string A, string B)
(be sure your method is public)
Constraints
-
A and B will each contain between 1 and 50 characters, inclusive.
-
A and B will both contain only lowercase letters ('a'-'z').
-
The length of A will be less than or equal to the length of B.
Examples
0)
"koder"
"topcoder"
Returns: 1
You can prepend "top" to "koder" and you'll get "topkoder". The difference between "topkoder" and "topcoder" is 1.
1)
"hello"
"xello"
Returns: 1
A and B already have the same length so you cannot add any characters to A.
2)
"abc"
"topabcoder"
Returns: 0
3)
"adaabc"
"aababbc"
Returns: 2
4)
"giorgi"
"igroig"
Returns: 6
我的程序:
#include <stdio.h> #include <math.h> #include <string.h> int main() { int i,j,min=15,tmp=0; char str1[15],str2[15]; printf("Please input the str1\n"); gets(str1); printf("Please input the str2\n"); gets(str2); for(j=0;str2[j];j++) { if(strlen(str1)<=strlen(str2)-j) { tmp=0; for(i=0;str1[i]&str2[i+j];i++) { if((str1[i]-str2[j+i])) { tmp+=1; } } } if(min>tmp) min=tmp; } printf("there are %d diff\n",min); }
C语言实现