在這個問題中,我們給了一個字串「str」、整數 K 和整數 X。該字串「str」僅包含 1 到 9 之間的整數。我們必須對該字串執行 X 次操作。操作就是每次我們都要用字串中的一個字元替換它出現的次數。這裡的頻率是指字串中字元的個數或值。我們的任務是在執行給定操作 X 次後返回第 k 個字元。
範例
Input 1: str = “1231”, K = 5, X = 3
Output 1: 2
說明
我們已經執行了 3 次給定的操作。
1st time, str = 1223331 as
對於字元str[0],頻率為1,值為1,因此1出現1次。
對於字元str[1],頻率是2,值是2,所以2出現了2次。
其他角色也類似。
2nd time, str = 122223333333331 3rd time, str = 1222222223333333333333333333333333331
所以剛好 X 次之後字串的第 K 個字元是 2。所以答案是 2。
Input 2: str = “1121”, K = 2, X = 5
Output 2: 2
我們已經看到了上面給定字串的範例,讓我們轉向方法 -
天真的方法
在這種方法中,我們透過執行給定的操作來計算新字串直到 X 次。在獲得恰好 X 次的字串後,我們傳回該字串的第 K 個字元。
範例
讓我們看一下程式碼,以便更好地理解上述方法 -
#include <bits/stdc++.h> using namespace std; // Function to find the Kth character of the string after X times char findKthChar(string str, long long K, int X){ string s = str; // create another string to store the give string as we need to update the string for (int i = 0; i < X; i++) { string temp = ""; // To store the temporary result of each time for (int j = 0; j < s.size(); j++) { int freq = s[j] - '0'; // getting freq of char s[j] // adding char value its frequency times to 'temp' result. while (freq--) { temp += s[j]; } } s = temp; // update the string after. } return s[K - 1]; // return Kth character of X times string } int main(){ // Given Input string str = "1231"; long long K = 5; int X = 3; // Function Call char result = findKthChar(str, K, X); cout << result << "\n"; return 0; }
輸出
2
時間與空間複雜度
#時間複雜度取決於給定的字串數字,並且等於數字的 x 次方以及每個數字的總和。
空間複雜度與時間複雜度完全相同。
高效的方法
它是上述方法的最佳化版本。其中我們計算 X 次每個包機的範圍,而不是每次都建立一個字串。
在這裡我們觀察到,每次角色相對於角色值都會增加時間的冪次方。
讓我們在下面討論上述方法的主要步驟 -
建立 kthChar 變數來儲存 x 次字串的 KthChar
建立變數tot來儲存X次後每個字元出現的計數
使用for迴圈遍歷字串並執行下列步驟
返回第 kthChar
#->取得目前字元的值
->使用該值和 X,我們可以得到 X 次後目前字元的範圍。正如我們所觀察到的,每次角色的力量值都會增加 X
作為 pow(value, X)。
−> 將此範圍儲存在變數「tot」中,以維持 X 次後字串的長度
−> 檢查 X 次後第 K 個字元是否位於字串的目前長度內
As (K
#範例
#include <bits/stdc++.h> using namespace std; // Function to find the Kth character of the string after X times char findKthChar(string str, long long K, int X){ char kthChar; // Variable to store the KthChar of x times string int tot = 0; // to store the count of the each character occur after the X times // Traverse the string 'str' for (int i = 0; i < str.size(); i++) { int value = str[i] - '0'; // Convert char into int to get the value // Calculate each characters occuring range int charRange = pow(value, X); tot += charRange; // If K is less than tot than kthChar is str[i] if (K <= tot) { kthChar = str[i]; break; // break the for loop } } // Return answer, kthChar of the string after X times return kthChar; } int main(){ string str = "1231"; // given string long long K = 5; // given integer int X = 3; // given integer // Function Call to get the kth character after X times char result = findKthChar(str, K, X); // Print the result cout << result << "\n"; return 0; }
輸出
2
時間與空間複雜度
#上述程式碼的時間複雜度為O(N),其中N是給定長度的大小。
上述程式碼的空間複雜度為 O(1),因為我們沒有使用任何額外的空間。
結論
在本教程中,我們實作了一個程序,用於在將 String 中的每個字元替換為其頻率恰好 X 次後找到第 K 個字元。我們實現了兩種方法,一種是樸素方法,另一種是有效方法。
以上是將字串中的每個字元替換為其頻率恰好X次後的第K個字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C 學習者和開發者可以從StackOverflow、Reddit的r/cpp社區、Coursera和edX的課程、GitHub上的開源項目、專業諮詢服務以及CppCon等會議中獲得資源和支持。 1.StackOverflow提供技術問題的解答;2.Reddit的r/cpp社區分享最新資訊;3.Coursera和edX提供正式的C 課程;4.GitHub上的開源項目如LLVM和Boost提陞技能;5.專業諮詢服務如JetBrains和Perforce提供技術支持;6.CppCon等會議有助於職業

C#適合需要高開發效率和跨平台支持的項目,而C 適用於需要高性能和底層控制的應用。 1)C#簡化開發,提供垃圾回收和豐富類庫,適合企業級應用。 2)C 允許直接內存操作,適用於遊戲開發和高性能計算。

C 持續使用的理由包括其高性能、廣泛應用和不斷演進的特性。 1)高效性能:通過直接操作內存和硬件,C 在系統編程和高性能計算中表現出色。 2)廣泛應用:在遊戲開發、嵌入式系統等領域大放異彩。 3)不斷演進:自1983年發布以來,C 持續增加新特性,保持其競爭力。

C 和XML的未來發展趨勢分別為:1)C 將通過C 20和C 23標準引入模塊、概念和協程等新特性,提升編程效率和安全性;2)XML將繼續在數據交換和配置文件中佔據重要地位,但會面臨JSON和YAML的挑戰,並朝著更簡潔和易解析的方向發展,如XMLSchema1.1和XPath3.1的改進。

現代C 設計模式利用C 11及以後的新特性實現,幫助構建更靈活、高效的軟件。 1)使用lambda表達式和std::function簡化觀察者模式。 2)通過移動語義和完美轉發優化性能。 3)智能指針確保類型安全和資源管理。

C 多線程和並發編程的核心概念包括線程的創建與管理、同步與互斥、條件變量、線程池、異步編程、常見錯誤與調試技巧以及性能優化與最佳實踐。 1)創建線程使用std::thread類,示例展示瞭如何創建並等待線程完成。 2)同步與互斥使用std::mutex和std::lock_guard保護共享資源,避免數據競爭。 3)條件變量通過std::condition_variable實現線程間的通信和同步。 4)線程池示例展示瞭如何使用ThreadPool類並行處理任務,提高效率。 5)異步編程使用std::as

C 的內存管理、指針和模板是核心特性。 1.內存管理通過new和delete手動分配和釋放內存,需注意堆和棧的區別。 2.指針允許直接操作內存地址,使用需謹慎,智能指針可簡化管理。 3.模板實現泛型編程,提高代碼重用性和靈活性,需理解類型推導和特化。

C 適合系統編程和硬件交互,因為它提供了接近硬件的控制能力和麵向對象編程的強大特性。 1)C 通過指針、內存管理和位操作等低級特性,實現高效的系統級操作。 2)硬件交互通過設備驅動程序實現,C 可以編寫這些驅動程序,處理與硬件設備的通信。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1
強大的PHP整合開發環境