点此欢迎光临我的个人网站【一几文星球】
题目:
Write a function that accepts an array of 10 integers (between 0 and 9), that returns a string of those numbers in the form of a phone number.
编写一个函数,该函数接受一个由 10 个整数(0 到 9 之间)组成的数组,以电话号码的形式返回这些数字的字符串。
Example:
Kata.createPhoneNumber(new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}) // => returns "(123) 456-7890"
The returned format must be correct in order to complete this challenge.
Don't forget the space after the closing parentheses!返回的格式必须正确才能完成此挑战。
不要忘记右括号后的空格!
刚看完题目,条件性的在脑海里想手机号码的规则,11位,前三位有特定的规则...
等看到后面的例子,what? 这是电话号码?座机号码吗?然后默默背了下小时候家里的座机号码,也不像啊,算了,跑题了,不管了按题目的例子来。
这个题一开始想到的方案就是拼接,然后立马又给自己否认了,-不可能,哪能这么简单啊!
于是开始推敲规则,思考怎样的循环好实现,然后发现越搞越复杂了...
后面一想有简单的方式干嘛不用,大不了我提交后去看看大神们怎么实现的,反正我又不是大神,用幼稚的方式实现那也是实现啊,应该不会被笑吧。
My Solutions (我的解决方案):
最后红线那句话的意思是:36 种类似的代码变体与这个组合在一起。
亏我之前各种脑补,原来这就是普遍选择的解决方案啊,原来是我把题想难了。
当然也有大神们选择了正则表达式或者循环,两个字,佩服!
Best Practices(最佳实践):
最高赞的方案-
public class Kata {
public static String createPhoneNumber(int[] numbers) {
return String.format("(%d%d%d) %d%d%d-%d%d%d%d",numbers[0],numbers[1],numbers[2],numbers[3],numbers[4],numbers[5],numbers[6],numbers[7],numbers[8],numbers[9]);
}
}
501 similar code variations are grouped with this one(501 个类似的代码变体与这个归为一组)
这个算是正则+拼接吧,看来我真的应该要去多研究研究正则了。
高赞第二的方案-
public class Kata {
public static String createPhoneNumber(int[] numbers) {
return String.format("(%d%d%d) %d%d%d-%d%d%d%d", java.util.stream.IntStream.of(numbers).boxed().toArray());
}
}
正则+stream流,提交类似方案的人不多,5个。
高赞第三的方案-
public class Kata {
public static String createPhoneNumber(int[] numbers) {
String phoneNumber = new String("(xxx) xxx-xxxx");
for (int i : numbers) {
phoneNumber = phoneNumber.replaceFirst("x", Integer.toString(i));
}
return phoneNumber;
}
}
看到一个用循环的了,循环+字符替换,一个字,绝!
还有一类方案使用了多个循环,个人觉得哈,代码量有点多了。
public class Kata {
public static String createPhoneNumber(int[] numbers) {
// Your code here!
StringBuilder sb = new StringBuilder();
sb.append("(");
//int start = 0
for(int i = 0;i<3;i++){
sb.append(String.valueOf(numbers[i]));
}
sb.append(") ");
for(int i = 3;i<6;i++){
sb.append(String.valueOf(numbers[i]));
}
sb.append("-");
for(int i= 6;i<10;i++){
sb.append(String.valueOf(numbers[i]));
}
return sb.toString();
}
}
虽然只做了两道题,但是已经体会到刷题特别是很多人一起刷题的乐趣了,端午放假可能不会刷题,希望收假后还能记得来继续刷题。
最后来一句应景的端午安康!
点此欢迎光临我的个人网站【一几文星球】
下一篇:Codewars-Java编程刷题学习3-Bit Counting
微信公众号,欢迎关注,一起学习。