C++,codewars.com/kata/5266876b8f4bf2da9b000362 Who likes it?, 6 kyu

/*
codewars.com/kata/5266876b8f4bf2da9b000362
Who likes it?, 6 kyu
设计函数, 传入vector<string>,返回string
规则示例演示
[] --> "no one likes this"
["Peter"] --> "Peter likes this"
["Jacob", "Alex"] --> "Jacob and Alex like this"
["Max", "John", "Mark"] --> "Max, John and Mark like this"
["Alex", "Jacob", "Mark", "Max"] --> "Alex, Jacob and 2 others like this"
*/
#include <string>
#include <vector>
std::string likes(const std::vector<std::string> &names)
{
using namespace std;
string ans = "";
if(names.empty()){
ans+="no one";
}else{
ans+=names[0];
}
if(names.size()>=3){
ans+=", "+names[1];
}
if(names.size()>=2){
ans+=" and";
}
if(names.size()==2||names.size()==3){
ans+=" "+names.back();
}else if(names.size()>=4){
ans+=" "+std::to_string(names.size()-2)+" others";
}
if(names.size()<=1){
ans+=" likes this";
}else{
ans+=" like this";
}
return ans; // Do your magic!
}

BestPractice

/*
Best Practices
确实,该用switch的时候就用,
这里应该对每种情况直接写出完整的结果,而不是让所有情况共用一套代码
分别写会更直观且便于修改
*/
#include <string>
#include <vector>
std::string likes(const std::vector<std::string> &names){
switch(names.size()){
case 0: return "no one likes this";
case 1: return names[0] + " likes this";
case 2: return names[0] + " and " + names[1] + " like this";
case 3: return names[0] + ", " + names[1] + " and " + names[2] + " like this";
default: return names[0] + ", " + names[1] + " and " + std::to_string(names.size() - 2) + " others like this";
}
}
posted @   Kazuma_124  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示