我目前正在处理代码搜寻级别6.02中的问题,该问题要求我将字符串中的所有其他字母大写。我已尝试使用toCharArray + StringBuilder for for循环。它有效,但还不够好。我仍然无法得到问题的完美分数。我的想法已经不多了。任何帮助将不胜感激。
注意:这是我关于堆栈溢出的第一篇文章。所以,如果我错过了什么或以错误的方式提问。请随时为我指出。谢谢。
s是输入字符串
尝试1:
char [] words = s.toCharArray();
for (int i = 0; i < words.length; i +=2){
words[i] = Character.toUpperCase(words[i]);
}
return new String(words);
尝试2:
StringBuilder result = new StringBuilder(s);
for (int i = 0; i < result.length(); i +=2){
result.replace(i, i + 1, result.substring(i,i + 1).toUpperCase());
}
return result.toString();
输入:“iaiaa”
预期产出:“IaIaA”
答案 0 :(得分:0)
在你的两次尝试中,你都会经历2 1/2次角色。
第二次尝试;
StringBuilder result = new StringBuilder(s);
for (int i = 0; i < result.length(); i +=2){
result.replace(i, i + 1, result.substring(i,i + 1).toUpperCase());
}
return result.toString();
第一行复制所有字符,最后一行复制所有字符。你的for循环遍历了一半的字符,共有2 1/2组字符。
我不知道这是否更快,但这是我的尝试。
String r = "";
for (int i = 0; i < s.length; i++) {
if (i % 2 == 0) {
r += s.substring(i, i + 1).toUpperCase();
} else {
r += s.substring(i, i + 1);
}
}
return r;
我意识到这看起来像是创建了很多中间字符串,但是自Java 1.7以来字符串连接已经有所改进。
答案 1 :(得分:0)
我不知道这究竟有多高效,但是这样做可以将首字母和其他所有字母大写。
String sentence = "i want to manipulate this string";
char[] array = new char[] {};
array = sentence.toCharArray(); //put the sentence into a character array
for (int i = 0; i < array.length; i += 2) {
if (array[i] == ' ') { //if the character is blank, move to the next index
i++;
}
array[i] = Character.toUpperCase(array[i]); //capitalize
}
sentence = new String(array); //revert array back to String
System.out.println(sentence); //display