【发布时间】:2016-08-08 19:02:58
【问题描述】:
我正在处理一个面试问题:
将字符串中的第 2、4、8、16 个字母大写
输入 - “字符串中的字母”
输出 - “字符串中的字母”
这是我的解决方案:
public static void main(String[] args) {
String input = "letters in a string";
String output = input.substring(0, 1) + input.substring(1, 2).toUpperCase() + input.substring(2, 3)
+ input.substring(3, 4).toUpperCase() + input.substring(4, 7) + input.substring(7, 8).toUpperCase()
+ input.substring(8, 15) + input.substring(15, 16).toUpperCase() + input.substring(15);
System.out.println(output);
}
有没有什么方法可以在不硬编码偏移数字的情况下概括这一点?一般来说,我正在寻找的是 - 给定我们想要大写的字母数字,我们的程序应该在不改变核心逻辑的情况下工作,并且在复杂性方面也应该是高效的?
【问题讨论】:
-
利用方法/功能
-
如果可以的话,你面试什么工作不知道如何编写方法?
-
@JunedAhsan,但这里没有人有一个通用的
Capitalize(String s, int index),另一种方法Capitalize(String s, int[] indices)可以在循环中使用。实现非常简单的解决方案,非常可重用,非常简洁等。 -
@BenKnoble 并且方法名应该以小写开头。
-
好点。我偶尔会滑倒(和大多数人一样)