题解 | #Hello World for U#

Hello World for U

https://www.nowcoder.com/practice/c6e414fddd7c401887c350c9cc41f01b

#include <iostream>
#include "string"
#include "vector"
using namespace std;

void getHandW(int size, int &height, int &width) {			// 根据初始输入的字符串长度,获取U的长和宽
    if (size % 3 == 0) {									// 情况1:左=下=右
        height = size / 3;
        width = height + 2;
    } else if ((size + 1) % 3 == 0) {						// 情况2:左 = 右 = 下 -1
        height = (size + 1) / 3;
        width = height + 1;									// 情况3:左 = 右 = 下 -2
    } else {
        width = height = (size + 2) / 3;
    }
}


int main() {
    string str;
    while (cin >> str) {									// 输入字符串
        int width, height;
        getHandW(str.size(), height, width);				// 获取U的长和宽
        vector<vector<char>> result(height, vector<char>(width));	// 初始化U矩阵:分配内存
        for (int i = 0; i < height; i++) 
            for (int j = 0; j < width; j++)
                result[i][j]=' ';							// 初始化U矩阵:内容置为空格
        
        for (int i = 0; i < height; i++) {					// 左 右
            result[i][0] = str[i];
            result[i][width - 1] = str[str.size() - 1 - i];
        }
        for (int i = 0; i < width - 2; i++) {				// 下
            result[height - 1][i + 1] = str[height + i];
        }
        for (int i = 0; i < height; i++) {					// 结果输出
            for (int j = 0; j < width; j++)
                cout << result[i][j];
            cout<<endl;
        }
    }
    return 0;
}

全部评论

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务