当前位置:   article > 正文

【牛客网】骆驼命名法

【牛客网】骆驼命名法
题目描述

从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;    //返回新字符串
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

思路 2 定义新串,在原串中用find()函数找到下划线,将下划线的前半部分直接移入新串,再继续在后面的串中找下划线移入前半部分,直至移完,返回新串。

string CtoJ(string s)   //C风格转化成Java风格
{
	string s1="";
	int i = 0;
	while (i < s.size())  
	{
		int pos = s.find('_', i);   //每次从第一个字符开始找到下划线
		if (pos <s.size())   //如果找到
		{
			s1 += s.substr(i, pos - i);   //将下划线的前半部分放入s1中
			s[pos+1] -= 32;   //下划线的下一个字符改成大写
			s = s.substr(pos+1, s.size() -(pos+1));   //在下划线的后半部分继续找下一个下划线
		}
		else     //如果s中没有下划线则直接将s放入s1中,循环结束
		{
			s1 += s;
			break;
		}
	}
	return s1;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
完整代码
#include <iostream>
#include <string>
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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
原题链接

https://www.nowcoder.com/questionTerminal/aed1c7bbc2604e7c9661a2348b0541b8

记得关注博主哦

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/831891
推荐阅读
相关标签
  

闽ICP备14008679号