C++で文字列を復号化した後にk番目の文字を見つけるプログラム
このチュートリアルでは、文字列を復号化した後にk番目の文字を見つけるプログラムについて説明します。
このために、文字と数字、および整数Kで構成される文字列が提供されます。タスクは、指定された文字列を復号化し、K番目の位置にある文字を見つけることです。
例
#include <cstdlib>
#include <iostream>
using namespace std;
//finding decrypted Kth character
char findKthChar(string s, int k) {
int len = s.length();
int i = 0;
int total_len = 0;
while (i < len) {
if (isalpha(s[i])) {
total_len++;
if (total_len == k)
return s[i];
i++;
}
else {
int n = 0;
while (i < len && !isalpha(s[i])) {
n = n * 10 + (s[i] - '0');
i++;
}
int next_total_len = total_len * n;
if (k <= next_total_len) {
int pos = k % total_len;
if (!pos) {
pos = total_len;
}
return findKthChar(s, pos);
}
else {
total_len = next_total_len;
}
}
}
return -1;
}
int main() {
string s = "ab2c3";
int k = 5;
cout << findKthChar(s, k);
return 0;
} 出力
c
-
文字'a'文字列を追加した後に文字列を検索するC++プログラムが非パリンドロームになります
小文字の英字を含む文字列Sがあるとします。 Sには文字「a」を1つだけ挿入する必要があります。それを挿入した後、Sを回文ではなくすることができる場合はその文字列を返し、そうでない場合は「不可能」を返します。 したがって、入力がS =bpapbのような場合、出力は bpaapbになります。 ステップ これを解決するには、次の手順に従います- if concatenation of S and "a" is not palindrome, then: return S concatenation 'a' otherwise when
-
グラフ内のスーパー頂点を見つけるためのC++プログラム
n個の頂点を持つグラフが与えられたとします。頂点には1からnの番号が付けられ、配列edgesで指定されたエッジによって接続されます。各頂点には、配列valuesで指定された1からnまでの数値内のx値があります。ここで、グラフからスーパー頂点を見つける必要があります。頂点1からiへの最短経路にi番目の頂点と同じ「x」値を持つ頂点がない場合、頂点iは「スーパー頂点」と呼ばれます。この基準を満たすすべての頂点を印刷します。 したがって、入力がn =5のようである場合、値={1、2、2、1、3}、エッジ={{1、2}、{2、3}、{2、3}、{2、4 }、{4、5}}の場合、出力は1 345に