C++で英字アルファベットと同じ位置にある文字を数える方法
大文字と小文字の両方を含む任意の長さの文字列が与えられたとき、その中から「英字アルファベットにおける位置」と「文字列内での位置」が一致している文字の個数を求めるのが本記事の課題です。
例
入力 − 文字列 str = eBGD 出力 − カウントは 2
説明 − B と D は、英字アルファベットと同じ順序で並んでいる文字です。B は2番目、D は4番目に位置しているため、該当するのはこの2文字になります。
入力 − 文字列 str = Abcdeizxy 出力 − カウントは 5
説明 − A、B、C、D、E の5文字が英字アルファベットと同じ順序で並んでいます。A が1番目、続いて B、C、D、E と続くため、カウントは5となります。
プログラムで使用するアプローチ
大文字と小文字を含む文字列を入力として受け取ります。
size() 関数で取得できる文字列の長さをもとに、インデックス0からループを開始します。
文字列には大文字と小文字の両方が含まれるため、「i == str[i] - 'a'」または「i == str[i] - 'A'」が成り立つかどうかを判定します。
ループの外側で一時変数(ここでは temp)を0で初期化し、条件を満たすたびにループ内で1ずつ加算していきます。
temp の値を返します。
最後に結果を出力します。
コード例
#include<iostream>
using namespace std;
int countalphabet(string str){
int res = 0;
// 文字列を先頭から走査する
for (int i = 0; i < str.size(); i++){
// 大文字同士・小文字同士はそれぞれ連続した
// 文字コードを持つため、差分が一致すれば
// アルファベット上の位置と同じと判断できる
if (i == (str[i] - 'a') || i == (str[i] - 'A')){
res++;
}
}
return res;
}
// main関数
int main(){
string str = "aBTutorIalspOiNT";
cout << "Count is:" << countalphabet(str);
return 0;
}出力
上記のコードを実行すると、次のような出力が得られます。
Count is: 2
-
【C++入門】文字列からアルファベット以外の文字をすべて削除する方法
C++における文字列とは、ヌル文字(\0)で終端される1次元の文字配列のことです。文字列には、アルファベットだけでなく、数字や特殊記号なども含まれる場合があります。本記事では、文字列からアルファベット以外の文字をすべて削除するC++プログラムを紹介します。サンプルプログラム#include <iostream> using namespace std; int main() { char str[100] = "String@123!!"; int i, j; &nb
-
C#で文字列内の文字を入れ替える方法(Selectメソッド活用)
C#で文字列に含まれる特定の文字を別の文字と入れ替えたい場合、LINQのSelectメソッドを使うと簡潔に実装できます。文字列はイミュータブル(不変)なため、直接書き換えることはできませんが、各文字を変換した新しい配列から文字列を再生成することで対応できます。まず、対象となる文字列を用意します。ここでは次の文字列を例にします。string str = PQRQP;この文字列に含まれるすべての「P」を「Q」に、「Q」を「P」に入れ替えます。Selectメソッドと三項演算子を組み合わせると、次のように1行で記述できます。str.Select(a => a == P ? Q : (a == Q