筆試程式碼題--搜狗--汪仔做對的題數範圍

大姐姐畢宿五發表於2020-10-02

筆試程式碼題--搜狗--汪仔做對的題數範圍


    注意:朋友對了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 };
	}
};

 

相關文章