【牛客網】ラクダの命名法

1827 ワード

タイトルの説明
C/C++からJavaに移行するプログラマーは、最初は変数のネーミング方式の変更に最も慣れていませんでした.C言語スタイルは下線で複数の単語を区切ります.例えば「hello_world」です.Javaはラクダ命名法というルールを採用しています.最初の単語を除いて、すべての単語の頭文字は大文字で、例えば「helloWorld」です.かわいそうなプログラマーたちに変数名を自動的に変換してください.
説明の入力:複数のデータのセットを入力します.各データのセットには、C言語スタイルの変数名が含まれています.各変数名の長さは100を超えない.
出力記述:各データセットに対応し、変数名に対応するラクダ命名法を出力します.

hello_を入力world nice_to_meet_helloWorld niceToMeetYou出力
問題を解く構想.
構想1は元の列を遍歴し、アルファベット文字が直接新しい列に移動し、下線にぶつかったら次の文字を大文字に変更し、下線は新しい列に移動せずに後ろを遍歴し続ける.すべてを移動するまで、新しい列を返します.
string CtoJ(string s)   //C     Java  
{
	string s1 = "";   //      
	for (int i = 0; i < s.size(); i++)   //    
	{
		if (s[i] == '_')    //      ,             
			s[i+1] -= 32;
		else            //              
		s1.push_back(s[i]);
	}
	return s1;    //      
}

構想2は新しい列を定義し、元の列の中でfind()関数で下線を見つけ、下線の前半部分を直接新しい列に移動し、その後の列の中で下線を探して前半部分に移動し、移動が終わるまで、新しい列に戻る.
string CtoJ(string s)   //C     Java  
{
	string s1="";
	int i = 0;
	while (i < s.size())  
	{
		int pos = s.find('_', i);   //               
		if (pos 

完全なコード
#include 
#include 
using namespace std;

string CtoJ(string s)   //C     Java  
{
	string s1 = "";   //      
	for (int i = 0; i < s.size(); i++)   //    
	{
		if (s[i] == '_')    //      ,             
			s[i+1] -= 32;
		else            //              
		s1.push_back(s[i]);
	}
	return s1;    //      
}

int main()
{
	string s;
	while (cin >> s)
		cout << CtoJ(s) << endl;
	return 0;
}

原題リンク
https://www.nowcoder.com/questionTerminal/aed1c7bbc2604e7c9661a2348b0541b8
ブロガーに注目してね