【牛客网】骆驼命名法

题目描述

从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 <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;
}
完整代码
#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;
}
原题链接

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

记得关注博主哦

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值