1618 找出適應螢幕的最大字型大小

2021-10-12 22:42:40 字數 1934 閱讀 6768

題目描述:

給定乙個字串 text。並能夠在 寬為 w 高為 h 的螢幕上顯示該文字。

字型陣列中包含按公升序排列的可用字型大小,您可以從該陣列中選擇任何字型大小。

您可以使用fontinfo介面來獲取任何可用字型大小的任何字元的寬度和高度。

fontinfo介面定義如下:

inte***ce fontinfo

一串字元的文字寬度應該是每乙個字元在對應字型大小(fontsize)下返回的寬度getheight(fontsize)的總和。

請注意:文字最多只能排放一排

如果使用相同的引數呼叫 getheight 或 getwidth ,則可以保證 fontinfo 將返回相同的值。

同時,對於任何字型大小的 fontsize 和任何字元 ch :

getheight(fontsize) <= getheight(fontsize+1)

getwidth(fontsize, ch) <= getwidth(fontsize+1, ch)

返回可用於在螢幕上顯示文字的最大字型大小。如果文字不能以任何字型大小顯示,則返回-1。

示例 1:

輸入: text = 「helloworld」, w = 80, h = 20, fonts = [6,8,10,12,14,16,18,24,36]

輸出: 6

example 2:

輸入: text = 「leetcode」, w = 1000, h = 50, fonts = [1,2,4]

輸出: 4

example 3:

輸入: text = 「easyquestion」, w = 100, h = 100, fonts = [10,15,20,25]

輸出: -1

注意:

1 <= text.length <= 50000

text 只包含小寫字母

1 <= w <= 107

1 <= h <= 104

1 <= fonts.length <= 105

1 <= fonts[i] <= 105

fonts 已經按公升序排序,且不包含重複項。

方法1:

(1)先通過高度限制,找出所有滿足高度要求的字型的範圍;

(2)然後在滿足高度要求的範圍內,使用二分,找出滿足寬度要求的右邊界;

/**

* // this is the fontinfo's api inte***ce.

* // you should not implement it, or speculate about its implementation

* class fontinfo ;

*/class

solution

int right=0;

int left=0;

while

(rightsize()

)++right;

}//說明所有的字型都不滿足高度要求,直接返回-1

if(right==0)

//二分,找出滿足寬度要求的右邊界

while

(left//確定邊界

if(cur_width<=w)

else

}//說明找到了右邊界

if(left>0)

return fonts[left-1]

;int cur_width=0;

//left為0時,判讀當前字型是否滿足要求

for(

int i=

0;i<26;

++i)

if(cur_width<=w)

return-1

;}};

找出最大的房子

找出最大的房子 include include include using namespace std int r,c 行列數 int rooms 60 60 rooms i j 表示 i j 地方對應的房屋數值 int color 60 60 方塊是否染過顏色標記 int maxroomarea ...

webView 自適應螢幕 的實現

讓webview載入的頁面居中顯示有我知道的幾種方法 第一種方法 websettings settings webview.getsettings settings.setlayoutalgorithm layoutalgorithm.single column layoutalgorithm是乙個...

get請求的最大字元長度

各瀏覽器http get請求url最大長度並不相同,幾類常用瀏覽器最大長度及超過最大長度後提交情況如下 ie6.0 url最大長度2083個字元,超過最大長度後無法提交。ie7.0 url最大長度2083個字元,超過最大長度後仍然能提交,但是只能傳過去2083個字元。firefox 3.0.3 ur...