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应用程序模拟器中将输入值转换为数字类型?

Python查找电话号码归属地邮编运营商信息等

codewars闯关玩耍1

如何在 ModelSerializer 的 create 方法中实现 update_or_create

正则表达式密码验证 - Codewars [重复]