C++中從給定字元集中生成單詞的可能性
在這個問題中,我們有兩個字串str1和str2。我們的任務是檢查str2的所有字元是否都存在於str1中。
讓我們舉個例子來理解這個問題
輸入 −
str1 = “Hello” str2 = “Hell”
輸出 − yes
解釋 − str2的所有字元都存在於str1中。
為了解決這個問題,一個簡單的解決方案是檢查str1中是否存在str2的每個字元,然後返回結果。
但是我們需要建立有效的解決方案。因此,我們將使用一個頻率陣列(對於所有有效字元長度為256),然後遍歷str1並根據出現的相應字元增加頻率陣列中的值。然後我們將遍歷str2,這將減少出現時的頻率陣列。在每次迭代中,我們還將檢查此頻率是否變為負數。如果變為負數,則不可能,否則可能。
示例
程式演示我們解決方案的實現
#include <iostream>
#include <string.h>
using namespace std;
bool isPresent(string str1, string str2){
int freq[256] = { 0 };
for (int i = 0; i<str1.length(); i++)
freq[str1[i]]++;
for (int i=0;i<str2.length(); i++) {
if (freq[str2[i]] < 1)
return false;
}
return true;
}
int main() {
string str1 = "tutorialspoint";
string str2 = "point";
cout<<"All charcters of '"<<str2<<"' are ";
isPresent(str1,str2)?cout<<"present":cout<<"not present";
cout<<" in '"<<str1<<"' ";
return 0;
}輸出
All charcters of 'point' are present in 'tutorialspoint'
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP