【牛客网】骆驼命名法

题目描述

从C/C++转到Java的程序员,一开始最不习惯的就是变量命名方式的改变。C语言风格使用下划线分隔多个单词,例如“hello_world”;而Java则采用一种叫骆驼命名法的规则:除首个单词以外,所有单词的首字母大写,例如“helloWorld”。
请你帮可怜的程序员们自动转换变量名。

输入描述:
输入包含多组数据。
每组数据一行,包含一个C语言风格的变量名。每个变量名长度不超过100。

输出描述:
对应每一组数据,输出变量名相应的骆驼命名法。

示例

输入
hello_world
nice_to_meet_you
输出
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

记得关注博主哦

你可能感兴趣的:(练习题)