C++中將兩個字串轉換為異位詞所需的最少操作次數
假設我們有兩個長度相等的字串,我們必須找到將兩個字串轉換為異位詞所需的最少更改次數,且不刪除任何字元。異位詞是指具有相同字元集的兩個字串。例如,兩個字串是“HELLO”和“WORLD”,在這種情況下,所需的更改次數為3,因為三個字元不同。
這個想法很簡單,我們必須找到第一個字串中每個字元的頻率,然後遍歷第二個字串,如果第二個字串中的字元出現在頻率陣列中,則減少頻率值。如果頻率值小於0,則將最終計數增加1。
示例
#include <iostream>
using namespace std;
int countAlteration(string str1, string str2) {
int count = 0;
int frequency[26];
for (int i = 0; i < 26; i++){
frequency[i] = 0;
}
for (int i = 0; i < str1.length(); i++)
frequency[str1[i] - 'A']++;
for (int i = 0; i < str2.length(); i++){
frequency[str2[i] - 'A']--;
if (frequency[str2[i] - 'A'] < 0)
count++;
}
return count;
}
int main() {
string s1 = "HELLO", s2 = "WORLD";
cout << "Number of required alteration: " << countAlteration(s1, s2);
}輸出
Number of required alteration: 3
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP