用 C++ 構建 K 個迴文的字串
假設我們有一個字串 s 和一個數字 k。我們必須使用 s 中的所有字元構建 k 個非空迴文字串。所以在這裡我們必須檢查我們是否可以使用 s 中的所有字元來構建 k 個迴文字串。
因此,如果輸入為“true”,k = 4,則輸出將為 True,因為唯一可能的解決方案是將每個字元放在一個單獨的字串中。
為了解決此問題,我們將遵循以下步驟:
n := s 的大小
如果 n < k,則 -
返回 False
如果 n 與 k 相同,則 -
返回 True
定義一個對映
對於 s 中的每個字元 c
(將 m[c] 增加 1)
奇數 := 0
對於 m 中的每個鍵值對 it -
奇數 := 奇數 + (it 的值 AND 1)
奇數<=k 時返回 True,否則返回 False
示例
讓我們看看以下實現以獲得更好的理解 -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool canConstruct(string s, int k) {
int n = s.size();
if (n < k)
return false;
if (n == k)
return true;
map<char, int> m;
for (char c : s)
m[c]++;
int odd = 0;
for (auto& it : m) {
odd += (it.second & 1);
}
return odd <= k;
}
};
main(){
Solution ob;
cout << (ob.canConstruct("true",4));
}輸入
"true"
輸出
1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP