题解 | #牛牛的旗语传递#

牛牛的旗语传递

https://www.nowcoder.com/practice/810b1c80a9c341c4af69facac350d6bc

  1. 题目考察的知识点

字符串,矩阵变换

  1. 题目解答方法的文字分析

设 nnn 为字符串 sss 的长度,r=numRows。对于 r=1(只有一行)或者 r≥n(只有一列)的情况,答案与 s相同,我们可以直接返回 sss。对于其余情况,考虑创建一个二维矩阵,然后在矩阵上按 Z 字形填写字符串 sss,最后逐行扫描矩阵中的非空字符,组成答案。

  1. 本题解析所用的编程语言

java

  1. 完整且正确的编程代码
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param numRows int整型 
     * @return string字符串
     */
    public String decodeFlag (String s, int numRows) {
        int n= s.length(),r=numRows;
        //对于 r=1(只有一行)或者 r≥n(只有一列)的情况,答案与 s相同,我们可以直接返回 s。
        if(r==1||r>=n){
            return s;
        }
        //创建一个二维矩阵,然后在矩阵上按 Z 字形填写字符串 s,最后逐行扫描矩阵中的非空字符,组成答案。
        int t=r*2-2;
        int c=(n+t-1)/t*(r-1);
        char[][] mat = new char[r][c];
        for(int i=0,x=0,y=0;i<n;i++){
            mat[x][y]= s.charAt(i);
            if(i%t<r-1){
                x++;//向下
            }else{
                x--;
                y++;//向右上
            }
        }
        //逐行扫描矩阵中的非空字符,组成答案
        StringBuilder ans = new StringBuilder();
        for(char[] row : mat){
            for(char ca:row){
                if(ca!=0){
                    ans.append(ca);
                }
            }
        }
        return ans.toString();
    }
}
全部评论

相关推荐

2025-11-22 16:20
已编辑
用友_Java开发实习生(实习员工)
等闲_:感觉有好多地方会被问穿,mysql存储向量这个方案问题应该很大的,如果深问的的话,为什么不用es,不用pg,不用mivus,分块策略是怎么做的,向量化是怎么向量化的,稠密向量还是稀疏向量,再深问余弦相似度,HSWM算法,Bm25算法,为什么不用混合检索或者Rank重排序优化?其他的项目不停机分库分表咋实现的,切库过程中数据有diff的话有没有补偿策略?既然有了分库分表了有没有碰到业务上不好优化的慢sql,让这个sql读从库?而且点评的话,最好自己压测过,要不这个数据也不好解释。现在就27的情况来看,很多同学已经有了中大厂实习,这个节点也会偏向这些有大厂实习的92同学,而且hc也不多,所以坚持海投吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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