Codewars:Create Phone Number(生成电话号码)
Posted 桃陉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codewars:Create Phone Number(生成电话号码)相关的知识,希望对你有一定的参考价值。
写在前面
这个题实际上非常简单,就是拼接生成字符串,但是我做完以后发现别人的一种做法,我大受震撼,感觉很巧妙,这种思想说不定以后也用得到,就摘出来做个纪念哇!
1.问题描述
原题
:
∙ \\bullet ∙ 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.
∙ \\bullet ∙ Example:
createPhoneNumber(int[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}) // => returns “(123) 456-7890”
难 度 : 6 k y u {\\color{Purple} 难度:6kyu} 难度:6kyu
翻译
:
∙ \\bullet ∙ 编写一个函数,接受一个由10个整数(介于0和9之间)组成的数组,该数组以电话号码的形式返回这些数字的字符串。
2.分析
∙ \\bullet ∙ 这是一道简单的数字转字符然后按照指定规则生成字符串的题目。
∙ \\bullet ∙ 按照一般人的思路肯定是循环一遍,遇到特殊的位置,标记出来然后插入指定字符,形成最后答案。
∙ \\bullet ∙ 但是还可以先生成一个带有目标格式的字符串,比如这里就可以写成 s t r i n g r e s = “ ( . . . ) . . . − . . . . " string \\ res = “(...) ...-...." string res=“(...)...−....",就是先将需要特殊填入的字符写入,然后其他位置使用 . . .来进行占位,最后只需要填入这些数据即可。
3.代码
∙
\\bullet
∙ 一般代码
:
string createPhoneNumber(const int arr [10]){
string res="(";
for(int i=0;i<10;i++)
{
if(i==3) res+=") ";
if(i==6) res+='-';
res += arr[i]+'0';
}
return res;
}
∙
\\bullet
∙ 格式化处理的代码
:
string createPhoneNumber(const int digits[10]) {
string res = "(...) ...-....";
for (unsigned is = 0, id = 0; is < res.length(); is++)
if (res[is] == '.')
res[is] = '0' + digits[id++];
return res;
}
以上是关于Codewars:Create Phone Number(生成电话号码)的主要内容,如果未能解决你的问题,请参考以下文章
Letter Combinations of a Phone Number
为什么无法在Windows 8 Phone应用程序模拟器中将输入值转换为数字类型?