日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2075. 解码斜向换位密码

發(fā)布時間:2023/11/29 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2075. 解码斜向换位密码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2075. 解碼斜向換位密碼

字符串 originalText 使用 斜向換位密碼 ,經(jīng)由 行數(shù)固定 為 rows 的矩陣輔助,加密得到一個字符串 encodedText 。

originalText 先按從左上到右下的方式放置到矩陣中。

先填充藍(lán)色單元格,接著是紅色單元格,然后是黃色單元格,以此類推,直到到達(dá) originalText 末尾。箭頭指示順序即為單元格填充順序。所有空單元格用 ’ ’ 進行填充。矩陣的列數(shù)需滿足:用 originalText 填充之后,最右側(cè)列 不為空 。

接著按行將字符附加到矩陣中,構(gòu)造 encodedText 。

先把藍(lán)色單元格中的字符附加到 encodedText 中,接著是紅色單元格,最后是黃色單元格。箭頭指示單元格訪問順序。

例如,如果 originalText = “cipher” 且 rows = 3 ,那么我們可以按下述方法將其編碼:

藍(lán)色箭頭標(biāo)識 originalText 是如何放入矩陣中的,紅色箭頭標(biāo)識形成 encodedText 的順序。在上述例子中,encodedText = “ch ie pr” 。

給你編碼后的字符串 encodedText 和矩陣的行數(shù) rows ,返回源字符串 originalText 。

注意:originalText 不 含任何尾隨空格 ’ ’ 。生成的測試用例滿足 僅存在一個 可能的 originalText 。

  • 示例 1:

輸入:encodedText = “ch ie pr”, rows = 3

輸出:“cipher”

解釋:此示例與問題描述中的例子相同。

  • 示例 2:

輸入:encodedText = “iveo eed l te olc”, rows = 4

輸出:“i love leetcode”

解釋:上圖標(biāo)識用于編碼 originalText 的矩陣。
藍(lán)色箭頭展示如何從 encodedText 找到 originalText 。

  • 示例 3:

輸入:encodedText = “coding”, rows = 1

輸出:“coding”

解釋:由于只有 1 行,所以 originalText 和 encodedText 是相同的。

  • 示例 4:

輸入:encodedText = " b ac", rows = 2

輸出:" abc"

解釋:originalText 不能含尾隨空格,但它可能會有一個或者多個前置空格。

提示:

  • 0 <= encodedText.length <= 10610^6106
  • encodedText 僅由小寫英文字母和 ’ ’ 組成
  • encodedText 是對某個 不含 尾隨空格的 originalText 的一個有效編碼
  • 1 <= rows <= 1000
  • 生成的測試用例滿足 僅存在一個 可能的 originalText

解題思路

  • 模擬矩陣的遍歷方法,首先從矩陣的最上角開始遍歷,向右下方不斷遍歷,直到超出界限,一旦超出界限,就將回到起始點,并且以起始點右邊的節(jié)點為起始點,重復(fù)遍歷
  • 因為originalText 不 含任何尾隨空格,因此我們需要對字符串末尾進行截斷,消除后綴的空格
  • 代碼

    class Solution { public:string decodeCiphertext(string encodedText, int rows) {if(rows==1) return encodedText;int col=encodedText.size()/rows;string res("");int x=0,y=0;while (x<rows&&y<col){int cx=x,cy=y;for (int i = 0; cx<rows&&cy<col ; ++i) {res+=encodedText[cy+cx*col];cx++;cy++;}y++;}int i = res.size()-1;for (; i >=0 ; --i) {if (res[i]!=' ')break;}return res.substr(0,i+1);} };

    總結(jié)

    以上是生活随笔為你收集整理的2075. 解码斜向换位密码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。