注意:朋友對了k道題,不一定是str1中的所有對。
* 題目:總共n道題,汪仔知道朋友做的k道題是對的,他知道自己做的題目是str1,問最少對幾道,最多對幾道
求start:不一樣的題目數d: d = n - count,如果d>k,比如n=5,k=3,c=1,d=4,也就是有可能不確定的4道都錯,而且一樣的也錯,對的最少是0道。
但是如果d<k,比如:n=5,k=4,c=2,d=3,因為朋友對了4道,其中兩道一樣,就算不確定的3道都是錯的,剩下的1道也是對的。
最差舉例:原題正確答案:AAAAA,朋友:AAABA,汪仔:BBABD,朋友對了4道,1,2,3,5,汪仔對了1道:3,朋友和汪仔相同的2道:3,4。
求end:一樣的count大於朋友做對的題數k,那麼最大值就是不一樣的全對,加上k道也全對,否則就是,全部的題目中除了k道錯了。
struct Interval
{
int start;
int end;
};
class Solution
{
public:
/*
* 注意:朋友對了k道題,不一定是str1中的所有對,
* 題目:總共n道題,汪仔知道朋友做的k道題都是對的,他知道自己做的題目是str1,問最少對幾道,最多對幾道
* n :int 整型 總題數
* k :int整型 朋友作對的題數,
* str1 :string字串 長度為n只包含ABCD的字串,其中第i個代表汪仔的題目
* str2 :string字串 長度為n只包含ABCD的字串,其中第i個代表朋友的題目
*/
Interval solve(int n, int k, string str1, string str2)
{
int start = 0;
int end = 0;
int count = 0;
for (int i = 0; i < n; i++)
{
if (str1[i] == str1[i])
count++;
}//相同的題數是count
int d = n - count;//不一樣的題目數d
start = (d < k) ? (k - d) : 0;
end = (count > k) ? (d + k) : (count + n - k);
return { start,end };
}
};