目錄
#範例
說明
天真的方法
輸出
高效的方法
結論
首頁 後端開發 C++ 將字串中的每個字元替換為其頻率恰好X次後的第K個字符

將字串中的每個字元替換為其頻率恰好X次後的第K個字符

Sep 11, 2023 pm 12:37 PM
字串 替換 頻率

將字串中的每個字元替換為其頻率恰好X次後的第K個字符

在這個問題中,我們給了一個字串「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迴圈遍歷字串並執行下列步驟

  • #->取得目前字元的值

    ->使用該值和 X,我們可以得到 X 次後目前字元的範圍。正如我們所觀察到的,每次角色的力量值都會增加 X

    作為 pow(value, X)。

    −> 將此範圍儲存在變數「tot」中,以維持 X 次後字串的長度

    −> 檢查 X 次後第 K 個字元是否位於字串的目前長度內

    As (K <= tot) if yes 則中斷 for 迴圈並將目前字元儲存到變數「kthChar」<= tot) if yes 则中断 for 循环并将当前字符存储到变量“kthChar”

  • 返回第 kthChar

#範例

#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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
PHP中int型別轉字串的方法詳解 PHP中int型別轉字串的方法詳解 Mar 26, 2024 am 11:45 AM

PHP中int型別轉字串的方法詳解在PHP開發中,常會遇到將int型別轉換為字串型別的需求。這種轉換可以透過多種方式實現,本文將詳細介紹幾種常用的方法,並附帶具體的程式碼範例來幫助讀者更好地理解。一、使用PHP內建函數strval()PHP提供了一個內建函數strval(),可以將不同類型的變數轉換為字串類型。當我們需要將int型別轉換為字串型別時,

怎麼重複字串_python重複字串教程 怎麼重複字串_python重複字串教程 Apr 02, 2024 pm 03:58 PM

1.先開啟pycharm,進入到pycharm首頁。 2.然後新建python腳本,右鍵--點選new--點選pythonfile。 3.輸入一段字串,代碼:s="-"。 4.接著需要把字串裡面的符號重複20次,代碼:s1=s*20。5、輸入列印輸出代碼,代碼:print(s1)。 6.最後運行腳本,在最底部會看到我們的回傳值:-就重複了20次。

如何在Go語言中截取字串 如何在Go語言中截取字串 Mar 13, 2024 am 08:33 AM

Go語言是一種強大且靈活的程式語言,它提供了豐富的字串處理功能,包括字串截取。在Go語言中,我們可以使用切片(slice)來截取字串。接下來,將詳細介紹如何在Go語言中截取字串,並附上具體的程式碼範例。一、使用切片截取字串在Go語言中,可以使用切片表達式來截取字串的一部分。切片表達式的語法如下:slice:=str[start:end]其中,s

Golang字串是否以指定字元結尾的判斷方法 Golang字串是否以指定字元結尾的判斷方法 Mar 12, 2024 pm 04:48 PM

標題:Golang中判斷字串是否以指定字元結尾的方法在Go語言中,有時候我們需要判斷一個字串是否以特定的字元結尾,這在處理字串時十分常見。本文將介紹如何使用Go語言來實現這項功能,同時提供程式碼範例供大家參考。首先,讓我們來看看Golang中如何判斷一個字串是否以指定字元結尾的方法。 Golang中的字串可以透過索引來取得其中的字符,而字串的長度可

Golang中如何檢查字串是否以特定字元開頭? Golang中如何檢查字串是否以特定字元開頭? Mar 12, 2024 pm 09:42 PM

Golang中如何檢查字串是否以特定字元開頭?在使用Golang程式設計時,經常會遇到需要檢查一個字串是否以特定字元開頭的情況。針對這項需求,我們可以使用Golang中的strings套件所提供的函數來實現。接下來將詳細介紹如何使用Golang檢查字串是否以特定字元開頭,並附上具體的程式碼範例。在Golang中,我們可以使用strings套件中的HasPrefix

解決PHP中16進位轉字串出現中文亂碼的方法 解決PHP中16進位轉字串出現中文亂碼的方法 Mar 04, 2024 am 09:36 AM

解決PHP中16進位轉字串出現中文亂碼的方法在PHP程式設計中,有時候我們會遇到需要將16進位表示的字串轉換為正常的中文字元的情況。然而,在進行這個轉換的過程中,有時會遇到中文亂碼的問題。這篇文章將為您提供解決PHP中16進位轉字串出現中文亂碼的方法,並給出具體的程式碼範例。使用hex2bin()函數進行16進位轉換PHP內建的hex2bin()函數可以將1

Golang 字串修改詳解:動態調整與可變性 Golang 字串修改詳解:動態調整與可變性 Apr 08, 2024 pm 03:27 PM

GoLang中的字串雖然不可變,但可透過以下技術動態修改:使用字串連接符號連接字串。使用字串格式化建立新字串。修改字串底層位元組切片。使用第三方庫提供的可變字串類型。

PHP字串操作:去除多餘逗號,保留唯一逗號實作技巧 PHP字串操作:去除多餘逗號,保留唯一逗號實作技巧 Mar 28, 2024 pm 03:02 PM

PHP字串操作:去除多餘逗號,保留唯一逗號實作技巧在PHP開發中,字串處理是一個非常常見的需求。有時候我們需要對字串進行處理,去除多餘的逗號,保留唯一的逗號。在這篇文章中,我將介紹一種實作技巧,並提供具體的程式碼範例。首先,我們來看一個常見的需求:假設我們有一個包含多個逗號的字串,我們需要去除多餘的逗號,只保留唯一的逗號。例如,將"apple,ba

See all articles