問題 C: 命名規範
時間限制: 1 Sec 內存限制: 128 MB
提交: 1936 解決: 1441
[提交] [狀態] [命題人:外部導入]
題目描述
在絕大多數程序設計語言中,變量名都不能包含空格。那麼如果我們使用的變量名由兩個或兩個以上的單詞來命名,我們就需要對這些單詞加以區分。
一般程序設計中,有兩種變量命名規範:Snake方式和Camel方式。Snake方式是指單詞用小寫字母,單詞間下劃線(“_”)代替空格;Camel方式是指相鄰單詞首字母用大寫表示,對單詞加以區分。
例如,你想定義一個變量表示一個數組數字之和,並且用英文“sum of array”。我們使用Snake方式的變量名爲:sum_of_array;用Camel命名方式的變量名爲:sumOfArray。
現在請你將一個Snake方式命名的變量,轉換成Camel方式命名的變量。
輸入
第一行一個字符串,表示用Snake方式命名的變量名。
輸出
輸出轉換成Camel方式命名的變量名。
樣例輸入 Copy
<span style="color:#333333"><span style="color:#333333">sum_of_array</span></span>
樣例輸出 Copy
<span style="color:#333333"><span style="color:#333333">sumOfArray</span></span>
提示
【輸出輸出樣例2】
name.in |
name.out |
yu_yao_high_school |
yuYaoHighSchool |
【數據範圍】
對於100%的數據,輸入字符串長度不超過50,只包含小寫字母和‘_’,第一個和最後一個字符不可能是下劃線,且保證沒有兩個連續的下劃線出現。
解法1:用split函數轉換爲字符串數組輸出,如果ascii碼不記得沒關係,隨便找一個大小寫剪出來就是了,然後用char強制類型轉換就可以實現駝峯輸出,這樣做的好處是,減少把字符串轉換爲字符數組之後的時間複雜度。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自動生成的方法存根
Scanner scan = new Scanner(System.in);
//int n = scan.nextInt();
String temp = scan.nextLine();
//StringBuffer out = new StringBuffer();
String[] rec = new String[101];
rec = temp.split("_");
if(rec.length==1) {
System.out.print(rec[0]);
}else {
System.out.print(rec[0]);
for(int i=1;i<rec.length;i++) {
System.out.print((char)(rec[i].charAt(0)+('A'-'a'))+rec[i].substring(1, rec[i].length()));
//System.out.print();
}
}
}
}
解法2:從計數器I入手
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
String str = scan.next();
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='_'){
char c = str.charAt(i+1);
String p = c+"";
p=p.toUpperCase();
System.out.printf("%s", p);
i++;
}else{
System.out.printf("%c",str.charAt(i));
}
}
System.out.println();
}
}