C++で文字列のK番目の文字を小文字に変換する方法
問題の概要
N 文字からなる文字列 S を考えます。S には「A」「B」「C」の 3 種類の文字のみが含まれており、これとは別に整数 K が与えられます。このとき、文字列 S の K 番目の文字を小文字に変換して出力するのが課題です。
例えば、入力が K = 2、S = "AABACC" の場合、2 番目の文字「A」が小文字の「a」に変わるため、出力は "AaBACC" となります。
解法のアプローチ
この問題は、以下の手順で解決できます。
S[K - 1] = S[K - 1] + 32 return S
ポイントは、大文字と小文字の ASCII コードの差がちょうど 32 であるという点です。そのため、対象の文字に 32 を加算するだけで小文字へ変換できます。また、文字列のインデックスは 0 から始まるため、K 番目の文字には S[K - 1] としてアクセスすることに注意しましょう。
実装例
理解を深めるために、実際の C++ 実装を見てみましょう。
#include <bits/stdc++.h>
using namespace std;
string solve(int K, string S){
S[K - 1] = S[K - 1] + 32;
return S;
}
int main(){
int K = 2;
string S = "AABACC";
cout << solve(K, S) << endl;
}入力
"AABACC"
出力
AaBACC
補足
この手法はシンプルで計算量も O(1) ですが、より可読性の高いコードを求める場合は、標準ライブラリの tolower() 関数を使って S[K - 1] = tolower(S[K - 1]); と書くこともできます。どちらの方法でも同じ結果が得られます。
-
摂氏を華氏に変換するC++プログラム
この記事では、C++を使って摂氏(℃)の温度を華氏(℉)に変換するプログラムを紹介します。摂氏から華氏への変換は、次のシンプルな数式で行えます。 F = (9 × C ÷ 5) + 32 ここで、Cは摂氏温度、Fは華氏温度を表します。例えば、摂氏37度は華氏98.6度に相当し、これは人間の平熱に近い値です。 アルゴリズム 処理の流れは以下の通りです。 開始 摂氏温度Cを入力する F = (9C/5) + 32 を計算する 結果Fを返す 終了 サンプルコード #include<iostream> using namespace std; int main() {
-
C#で文字列の大文字・小文字を変換する方法(ToLower/ToUpperメソッド)
C#では、ToLower()メソッドとToUpper()メソッドを使うことで、文字列の大文字と小文字を簡単に変換できます。この記事では、具体的なコード例とともに、それぞれの使い方をわかりやすく解説します。 大文字から小文字へ変換する(ToLowerメソッド) たとえば、次のような大文字のみの文字列があるとします。 str = AMIT; この大文字の文字列を小文字に変換するには、ToLower()メソッドを使用します。 Console.WriteLine(Converted to LowerCase : {0}, str.ToLower()); サンプルコード 以下は、C#で文字列の大文字を小