赞
踩
从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
记得关注博主哦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。