Cプログラムの文字列の英数字の略語?
ここでは、特定の文字列の英数字の省略形に関連する1つの興味深い問題が発生します。文字列の長さは10未満です。すべての英数字の略語を出力します。
英数字の略語は、数字と混合された文字の形式です。その桁の値は、欠落している文字の数です。スキップされたサブストリングはいくつあってもかまいません。 2つのサブストリングが互いに隣接していません。アイデアを得るためのアルゴリズムを見てみましょう。
アルゴリズム
printAbbreviation(s、index、max、str)-
begin if index is same as max, then print str end if add s[index] at the last of str printAbbreviation(s, index + 1, max, str) delete last character from str count := 1 if str is not empty, then if the last character of str is a digit, then add last digit with the count value delete last character from str end if end if add count after the str printAbbreveation(s, index + 1, max, str) end
例
#include <iostream> using namespace std; void printAbbreviation(const string& s, int index, int max_index, string str) { if (index == max_index) { //if string has ended cout << str << endl; return; } str.push_back(s[index]); // push the current character to result printAbbreviation(s, index + 1, max_index, str); //print from next index str.pop_back(); //remove last character int count = 1; if (!str.empty()) { if (isdigit(str.back())) { //if the last one is digit, then count += (int)(str.back() - '0'); //count the integer value of that digit str.pop_back(); //remove last character } } char to_char = (char)(count + '0'); //make count to character str.push_back(to_char); printAbbreviation(s, index + 1, max_index, str); //do for next index } void printCombination(string str) { if (!str.length()) //if the string is empty return; string str_res; printAbbreviation(str, 0, str.length(), str_res); } int main() { string str = "HELLO"; printCombination(str); }
出力
HELLO HELL1 HEL1O HEL2 HE1LO HE1L1 HE2O HE3 H1LLO H1LL1 H1L1O H1L2 H2LO H2L1 H3O H4 1ELLO 1ELL1 1EL1O 1EL2 1E1LO 1E1L1 1E2O 1E3 2LLO 2LL1 2L1O 2L2 3LO 3L1 4O 5
-
指定されたインデックスを使用して文字列の文字を変更するPythonプログラム
文字列s、インデックスi、文字cがあるとします。 cを使用してsのi番目の文字を置き換える必要があります。現在Pythonでは、文字列は本質的に不変です。 s [i] =cのようなステートメントを書くことはできません。エラーが発生します[TypeError:strオブジェクトはアイテムの割り当てをサポートしていません] したがって、入力がs =python、i =3、c =Pの場合、出力は pytPonになります。 これを解決するには、次の手順に従います- 左:=s[インデックス0からiまで] 右:=s[インデックスi+1から終了まで] 左の連結を返すc右の連結を返す
-
英数字で終わる文字列を受け入れるPythonプログラム
文字列が英数字で終わっているかどうかを確認する必要がある場合は、正規表現を使用します。英数字を確認し、文字列を出力として返すメソッドが定義されています。 例 以下は同じもののデモンストレーションです import re regex_expression = '[a-zA-z0-9]$' def check_string(my_string): if(re.search(regex_expression, my_string)): print("The string ends with alphanumeric character")