Python刷題練習

文章目錄

    • 1.尋找相同字串
    • 2.密鑰格式化
    • 3.五鍵鍵盤的輸出
    • 4.單詞重量
    • 5.輸出指定字母在字符串的中的索引
    • 6.污染水域
    • 7.九宮格按鍵輸入
    • 8.任務最優調度
    • 9.高效的任務規劃


1.尋找相同字串

題目描述:
給你兩個字符串t和p,要求從t中找到一個和p相同的連續子串,并輸出該子串第一個字符的下標。

輸入描述:
輸入文件包括兩行 分別表示字符串t和p
保證t的長度不小于p
且t的長度不超過1000000
p的長度不超過10000

輸出描述:
如果能從t中找到一個和p相等的連續子串,則輸出該子串第一個字符在t中的下標,下標從左到右依次為1,2,3,…;
如果不能,則輸出 “No”
如果含有多個這樣的子串,則輸出第一個字符下標最小的

用例:
輸入:AVERDXIVYERDIAN
RDXI
輸出:4

"""尋找相同字串"""def search_same_string(t: str, p: str):""""""t_len = len(t)p_len = len(p)for i in range(t_len):if t[i] == p[0]:for j in range(p_len):if t[i+j] != p[j]:breakelse:return i + 1return "No"t = "AVERDXIVYERDIAN"
p = "RDXI"
result = search_same_string(t, p)
print(result)

2.密鑰格式化

題目描述:
給定一個非空字符串 S,其被 N 個’-‘分隔成 N+1 的子串,給定正整數 K,要求除第一個子串外,其余的串每 K 個用’-‘分隔,并將小寫字母轉換為大寫。

輸入描述:
正整數 K 和‘-’分割的字符串,如:
2
25G3C-abc-d

輸出描述:
轉換后的字符串

用例1:
輸入:4
5F3Z-2e-9-w
輸出:5F3Z-2E9W

用例2:
輸入:2
2-5g-3-J
輸出:2-5G-3J

"""密鑰格式化"""def key_format(k: int, s: str):""""""s_split = s.split("-")post_s = "".join(s_split[1:]).upper()post_s_split = [post_s[i:i+k] for i in range(0, len(post_s), k)]post_s = "-".join(post_s_split)result = f"{s_split[0]}-{post_s}"return resultk = 4
s = "5F3Z-2e-9-w"
result = key_format(k, s)
print(result)

3.五鍵鍵盤的輸出

題目描述:
有一個特殊的5鍵鍵盤,上面有a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五個鍵。
a鍵在屏幕上輸出一個字母a;
ctrl-c將當前選擇的字母復制到剪貼板;
ctrl-x將當前選擇的字母復制到剪貼板,并清空選擇的字母;
ctrl-v將當前剪貼板里的字母輸出到屏幕;
ctrl-a選擇當前屏幕上的所有字母。

注意:
剪貼板初始為空,新的內容被復制到剪貼板時會覆蓋原來的內容
當屏幕上沒有字母時,ctrl-a無效
當沒有選擇字母時,ctrl-c和ctrl-x無效
當有字母被選擇時,a和ctrl-v這兩個有輸出功能的鍵會先清空選擇的字母,再進行輸出
給定一系列鍵盤輸入,輸出最終屏幕上字母的數量。

輸入描述:
輸入為一行,為簡化解析,用數字1 2 3 4 5代表a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五個鍵的輸入,數字用空格分隔。

輸出描述:
輸出一個數字,為最終屏幕上字母的數量。

用例1:
輸入:[1, 1, 1]
輸出:3

用例2:
輸入:[1, 1, 5, 1, 5, 2, 4, 4]
輸出:2

"""5鍵鍵盤的輸出"""def five_key_board(opts: list):""""""output = ""select = ""backup = ""for n in opts:if n == 1:if select:output = ""select = ""output += "a"if n == 2:if not select:continuebackup = selectif n == 3:if not select:continuebackup = selectoutput = ""if n == 4:if select:output = ""select = ""output += backupif n == 5:if not output:continueselect = outputreturn len(output)opts = [1, 1, 5, 1, 5, 2, 4, 4]
result = five_key_board(opts)
print(result)

4.單詞重量

題目描述:
每個句子由多個單詞組成,句子中的每個單詞的長度都可能不一樣,我們假設每個單詞的長度Ni為該單詞的重量,你需要做的就是給出整個句子的平均重量V。

輸入描述:

輸出描述:

用例1:
輸入:“Who Love Solo”
輸出:3.67

"""單詞重量"""def word_weight(s: str):""""""words = s.split()words_len = len(words)all_w = 0for word in words:all_w += len(word)result = round(all_w / words_len, 2)return results = "Who Love Solo"
result = word_weight(s)
print(result)

5.輸出指定字母在字符串的中的索引

題目描述:
給定一個字符串,把字符串按照大寫在前小寫在后排序,輸出排好后的第 K 個字母在原來字符串的索引。
相同字母輸出第一個出現的位置。

輸入描述:

輸出描述:

用例1:
輸入:hAkDAjByBq
4
輸出:6

"""輸出指定字母在字符串的中的索引"""def output_index(s: str, k: int):""""""new_s = sorted(s)s_len = len(s)for i in range(s_len):if s[i] == new_s[k-1]:return is = "hAkDAjByBq"
k = 4
result = output_index(s, k)
print(result)

6.污染水域

題目描述:
輸入一行字符串,字符串可轉換為N*N的數組,數組可認為是一個水域,判斷多少天后,水域被全部污染。
數組中只有0和1,0表示純凈,1表示污染,每天只可污染上下左右的水域,如果開始全部被污染,或永遠無法污染,則返回-1。

輸入描述:

輸出描述:

用例1:
輸入:[[1,0,1], [0,0,0], [1,0,1]]
輸出:2

用例2:
輸入:[[0,0], [0,0]]
輸出:-1

"""污染水域"""def pollute_water(nums: list):""""""polluted = []nums_len = len(nums)for x in range(nums_len):for y in range(nums_len):if nums[x][y] == 0:continuepolluted.append((x, y))if not polluted or len(polluted) == nums_len * nums_len:return -1def operate():polluted_len = len(polluted)for i in range(polluted_len):x = polluted[i][0]y = polluted[i][1]if x - 1 >= 0 and (x - 1, y) not in polluted:polluted.append((x - 1, y))if x + 1 < nums_len and (x + 1, y) not in polluted:polluted.append((x + 1, y))if y - 1 >= 0 and (x, y - 1) not in polluted:polluted.append((x, y - 1))if y + 1 < nums_len and (x, y + 1) not in polluted:polluted.append((x, y + 1))day = 1while True:operate()if len(polluted) == nums_len * nums_len:return dayday += 1nums = [[1, 0, 1],[0, 0, 0],[1, 0, 1],
]
result = pollute_water(nums)
print(result)

7.九宮格按鍵輸入

題目描述:
九宮格按鍵輸入,輸出顯示內容,有英文和數字兩個模式,默認是數字模式,數字模式直接輸出數字,英文模式連續按同一個按鍵會依次出現這個按鍵上的字母,如果輸入”/”或者其他字符,則循環中斷。
字符對應關系如圖:
1: ,.
2: abc
3: def
4: ghi
5: jkl
6: mno
7: pqrs
8: tuv
9: wxyz
#:
0: 空格
/:
要求輸入一串按鍵,輸出屏幕顯示。

輸入描述:
輸入范圍為數字 0~9 和字符’#’、’/’,輸出屏幕顯示,例如,
在數字模式下,輸入 1234,顯示 1234
在英文模式下,輸入 1234,顯示 ,adg

輸出描述:
#用于切換模式,默認是數字模式,執行#后切換為英文模式;
/表示延遲,例如在英文模式下,輸入 22/222,顯示為 bc;
英文模式下,多次按同一鍵,例如輸入 22222,顯示為 b;

用例1:
輸入:“123#222235/56”
輸出:“123adjjm”

"""九宮格按鍵輸入"""def nine_key_input(s: str):""""""nums_dict = {"1": ",.","2": "abc","3": "def","4": "ghi","5": "jkl","6": "mno","7": "pqrs","8": "tuv","9": "wxyz","#": "","0": "空格","/": "",}num_mode = Truenum_index = ["-1", 0]output = []s_len = len(s)for i in range(s_len):if s[i] == "/":num_index = ["-1", 0]continueif s[i] == "#":num_mode = Falsecontinueif num_mode:output.append(s[i])num_index = ["-1", 0]continueif s[i] == "0":output.append(" ")continueif s[i] == num_index[0]:s_i_len = len(nums_dict[s[i]])if num_index[1] + 1 == s_i_len:num_index[1] = 0else:num_index[1] += 1output[-1] = nums_dict[s[i]][num_index[1]]continueoutput.append(nums_dict[s[i]][0])num_index = [s[i], 0]result = "".join(output)return results = "123#222235/56"
result = nine_key_input(s)
print(result)

8.任務最優調度

題目描述:
給定一個正整數數組表示待系統執行的任務列表,數組的每一個元素代表一個任務,元素的值表示該任務的類型。
請計算執行完所有任務所需的最短時間。
任務執行規則如下:
1.任務可以按任意順序執行,且每個任務執行耗時間均為1個時間單位。
2.兩個同類型的任務之間必須有長度為N個單位的冷卻時間,比如N為2時,在時間K執行了類型3的任務,那么K+1和K+2兩個時間不能執行類型3任務。
3.系統在任何一個單位時間內都可以執行一個任務,或者等待狀態。
說明:數組最大長度為1000,數組最大值1000。

輸入描述:
1.第一行記錄一個用半角逗號分隔的數組,數組長度不超過1000,數組元素的值不超過1000,
2.第二行記錄任務冷卻時間,N為正整數,N<=100。

輸出描述:
輸出為執行完所有任務所需的最短時間。

用例1:
輸入:[2, 2, 2, 3]
2
輸出:7

"""任務最優調度"""def task_optimal_solution(nums: list, n: int):""""""nums_len = len(nums)min_time = 0task = 1task_seq = []while task <= nums_len:add_time_min = -1task_index = 0for i in range(nums_len):if i in task_seq:continuetask_seq_len = len(task_seq)for j in range(-1, -n-1, -1):if -j > task_seq_len:continueif nums[i] == nums[task_seq[j]]:add_time = 1 + n + j + 1breakelse:add_time = 1if add_time_min == -1 or add_time < add_time_min:add_time_min = add_timetask_index = imin_time += add_time_mintask_seq.append(task_index)task += 1return min_timenums = [2, 2, 2, 3]
n = 2
result = task_optimal_solution(nums, n)
print(result)

9.高效的任務規劃

題目描述:
你有 n 臺機器,編號為 1~n,每臺都需要完成一項工作,機器經過配置后都能獨立完成一項工作。
假設第 i 臺機器你需要花 Bi 分鐘進行設置,然后開始運行,Ji 分鐘后完成任務。
現在,你需要選擇布置工作的順序,使得用最短的時間完成所有工作。
注意,不能同時對兩臺進行配置,但配置完成的機器們可以同時執行他們各自的工作。

輸入描述:
第一行輸入代表總共有 M 組任務數據(1<M<=10)。
每組數第一行為一個整數指定機器的數量 N(0<N<=1000)。隨后的 N 行每行兩個整數,第一個表示 B(0<=B<=10000),第二個表示 J(0<=J<=10000)。
每組數據連續輸入,不會用空行分隔。各組任務單獨計時。

輸出描述:
對于每組任務,輸出最短完成時間。

用例1:
輸入:1
1
2 2
輸出:4

用例2:
輸入:1
3
1 1
2 2
3 3
輸出:7

"""高效的任務規劃"""def optimal_task_plan(n: list):""""""n_len = len(n)machine = 1machine_seq = []all_config_time = 0min_time = 0while machine <= 2:config_time = -1machine_ind = 0max_run_time = -1for i in range(n_len):if i in machine_seq:continuerun_time = n[i][1]if max_run_time == -1 or run_time > max_run_time:max_run_time = run_timeconfig_time = n[i][0]machine_ind = imachine_seq.append(machine_ind)all_config_time += config_timemin_time = max(min_time, all_config_time + max_run_time)machine += 1return min_timen = [(1, 1), (2, 2), (3, 3)]
result = optimal_task_plan(n)
print(result)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82986.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82986.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MATLAB實現振幅調制(AM調制信號)

AM調制是通信專業非常重要的一個知識點。今天我們使用MATLAB編程實現AM調制。 我們實現輸入一個載波信號的頻率與調制信號的頻率后&#xff0c;再輸入調幅度&#xff0c;得到已調信號的波形與包絡信號的波形&#xff0c;再使用FFT算法分析出已調信號的頻譜圖。 源代碼&#x…

JJJ:linux ida

文章目錄 1.總結2.各類函數2.1 分配一個倉庫2.2 銷毀倉庫2.3 從倉庫里面分配一個整數id2.4 將上面分配的整數id從倉庫里面刪除2.5 在指定范圍內分配一個id 1.總結 ida使用起來很簡單&#xff0c;就是先分配一個倉庫一樣的實例&#xff0c;再從這個倉庫里面分配一個獨一無二的整…

FastByteArrayOutputStream和ByteArrayInputStream有什么區別

FastByteArrayOutputStream 和 ByteArrayInputStream 是兩種完全不同的 Java I/O 類&#xff0c;它們的主要區別體現在 設計目的 和 使用場景 上。以下是詳細對比&#xff1a; 1. 核心區別總結 特性FastByteArrayOutputStream (Spring框架)ByteArrayInputStream (JDK原生)所屬…

docker-compose——安裝redis

文章目錄 一、編寫docker-compose.yaml文件二、編寫redis.conf文件三、啟動docker-compose 一、編寫docker-compose.yaml文件 version: 3.3 services:redis:image: redis:latestcontainer_name: redisrestart: alwaysports:- 6379:6379volumes:- ./redis/data:/data- ./redis/…

東芝推出新的SCiB模塊,散熱性能加倍,適用于電動公交車、電動船舶和固定應用

東京—東芝公司推出了一種新的SCiB模塊&#xff0c;這是一種專為電動汽車、電動船舶和固定應用而設計的鋰離子電池。新產品采用鋁制底板&#xff0c;散熱量約為當前模塊的兩倍。它將于2025年4月中旬在日本和全球上市。 鋰離子電池的使用越來越多&#xff0c;而且越來越多樣化&a…

【進程控制二】進程替換和bash解釋器

【進程控制二】進程替換 1.exec系列接口2.execl系列2.1execl接口2.2execlp接口2.3execle 3.execv系列3.1execv3.2總結 4.實現一個bash解釋器4.1內建命令 通過fork創建的子進程&#xff0c;會繼承父進程的代碼和數據&#xff0c;因此本質上還是在執行父進程的代碼 進程替換可以將…

Java基礎語法之數組

數組 一、認識數組 1.什么是數組 數組就是一個容器&#xff0c;用來存一批同種類型的數據。 舉例 20, 10, 80, 60, 90 int[] arr {20, 10, 80, 60, 90};張三, 李四, 王五 String[] names {"張三", "李四", "王五"};2.為什么要使用數組 假設…

Java死鎖排查:線上救火實戰指南

想象一下&#xff0c;你正在值班&#xff0c;突然監控告警紅成一片&#xff0c;用戶反饋雪花般飄來&#xff1a;“系統卡死了&#xff01;用不了了&#xff01;” —— 這很可能就是Java應用遭遇了“死鎖”這個大魔王。這時候&#xff0c;你就是救火隊長&#xff0c;首要任務不…

006-nlohmann/json 結構轉換-C++開源庫108杰

絕大多數情況下&#xff0c;程序和外部交換的數據&#xff0c;都是結構化的數據。 1. 手工實現——必須掌握的基本功 在的業務類型的同一名字空間下&#xff0c;實現 from_json 和 to_json 兩個自由函數&#xff08;必要時&#xff0c;也可定義為類型的友元函數&#xff09;&a…

白盒測試——基本路徑測試法

一、實驗名稱 白盒測試——基本路徑測試法 二、實驗目的 白盒測試是結構測試&#xff0c;是依據被測程序的內部邏輯結構設計測試用例&#xff0c;驅動被測程序運行完成的測試&#xff0c;通過本實驗希望&#xff1a; 1、掌握基本路徑測試法的基本概念&#xff0c;用具體的例子…

【嵌入模型與向量數據庫】

目錄 一、什么是向量&#xff1f; 二、為什么需要向量數據庫&#xff1f; 三、向量數據庫的特點 四、常見的向量數據庫產品 FAISS 支持的索引類型 vs 相似度 五、常見向量相似度方法對比 六、應該用哪種 七、向量數據庫的核心邏輯 &#x1f50d; 示例任務&#xff1a;…

matlab中和三角函數相關的內容

和三角相關的函數 以下內容為Ai輸出 函數描述示例sin(x)正弦函數&#xff0c;返回x的正弦值&#xff0c;x單位為弧度sin(pi/2)cos(x)余弦函數&#xff0c;返回x的余弦值&#xff0c;x單位為弧度cos(pi)tan(x)正切函數&#xff0c;返回x的正切值&#xff0c;x單位為弧度tan(pi…

scratch基礎-外觀模塊

一、本次任務 二、內容詳解 1、模塊介紹 1、說[你好] (2)秒&#xff1a;臨時對話框&#xff0c;短暫對話 2、說[你好]&#xff1a;持續顯示對話框&#xff0c;長文本顯示 3、思考[嗯…] (2)秒&#xff1a;臨時顯示思考氣泡&#xff0c;用于角色思考 4、思考[嗯…] &#xff1a…

TAOCMS漏洞代碼學習及分析

路由規則 分為前臺和后臺&#xff0c; 前臺在api.php中 <?php session_start(); include(config.php); include(SYS_ROOT.INC.common.php); $ctrl$_REQUEST[ctrl]; $action$_REQUEST[action]; $mucfirst($action); if(!in_array($m,array(Api,Comment)))d…

Spring @Scheduled注解詳解

文章目錄 1.Scheduled注解定義2.配置 Scheduled2.1 開啟定時任務支持2.2 創建定時任務 3. 常用屬性3.1 fixedRate3.2 fixedDelay3.3 cron 4.工作原理4.1 基于TaskScheduler4.2 使用 ThreadPoolTaskScheduler4.3 定時任務的執行流程 5. 延時執行的定時任務5.1 創建定時任務類5.2…

理解計算機系統_并發編程(5)_基于線程的并發(二):線程api和基于線程的并發服務器

前言 以<深入理解計算機系統>(以下稱“本書”)內容為基礎&#xff0c;對程序的整個過程進行梳理。本書內容對整個計算機系統做了系統性導引,每部分內容都是單獨的一門課.學習深度根據自己需要來定 引入 接續上一篇理解計算機系統_并發編程(4)_基于線程的并發(一…

使用PhpStudy搭建Web測試服務器

一、安裝PhpStudy 從以下目錄下載PhpStudy安裝文件 Windows版phpstudy下載 - 小皮面板(phpstudy) (xp.cn) 安裝成功之后打開如下界面 點擊啟動Apache 查看網站地址 在瀏覽器中輸入localhost:88,出現如下頁面就ok了 二、與Unity交互 1.配置下載文件路徑&#xff0c;點擊…

cocos creator 3.8 下的 2D 改動

在B站找到的系統性cocos視頻教程,純2D開發入門,鏈接如下: zzehz黑馬程序員6天實戰游戲開發微信小程序&#xff08;Cocos2d的升級版 CocosCreator JavaScript&#xff09;_嗶哩嗶哩_bilibili黑馬程序員6天實戰游戲開發微信小程序&#xff08;Cocos2d的升級版 CocosCreator Ja…

【Hot 100】208. 實現 Trie (前綴樹)

目錄 引言實現 Trie (前綴樹)我的解題代碼解析代碼思路分析優化建議1. 內存泄漏問題2. 使用智能指針優化內存管理3. 輸入合法性校驗&#xff08;可選&#xff09;4. 其他優化 總結 &#x1f64b;?♂? 作者&#xff1a;海碼007&#x1f4dc; 專欄&#xff1a;算法專欄&#x1…

Unity3D仿星露谷物語開發42之粒子系統

1、目標 使用例子系統&#xff0c;實現割草后草掉落的特效。 通過PoolManager獲取特效預制體&#xff0c;通過VFXManager來觸發特效。 2、配置例子特效 在Hierarchy -> PersistentScene下創建新物體命名為Reaping。 給該物體添加Particle System組件。 配置例子系統參數…