華為OD機試真題——字符串加密 (2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳實現

在這里插入圖片描述

2025 B卷 100分 題型

本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式;
并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析;
本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分享》

華為OD機試真題《字符串加密》:


文章快捷目錄

題目描述及說明

Java

python

JavaScript

C++

C

GO


題目名稱:字符串加密


知識點:字符串處理、邏輯處理
時間限制:1秒
空間限制:256MB
限定語言:不限


題目描述

給定一個未加密的字符串 str,通過對每個字母進行偏移操作實現加密。偏移量由特定數組 a 決定,具體規則如下:

  1. 數組 a 的前三位已賦值:a[0]=1a[1]=2a[2]=4
  2. i≥3 時,數組元素 a[i] = a[i-1] + a[i-2] + a[i-3]
  3. 對字符串 str 中的第 i 個字符 str[i],將其在字母表中向右偏移 a[i] 位。如果超出 z,則循環回到 a 繼續計算(例如 z 偏移 2 位后為 b)。

輸入描述

  • 第一行為整數 n1 ≤ n ≤ 1000),表示測試數據組數。
  • 每組數據包含一行字符串 str(僅由小寫字母組成,長度 0 < |str| ≤ 50)。

輸出描述

  • 每組測試數據輸出一行,表示加密后的字符串。

示例
輸入:

2  
a  
z  

輸出:

b  
a  

解釋:

  • a 偏移 1 位變為 b
  • z 偏移 1 位(數組第二個元素為 2,但因為 z + 2 = b,此處示例可能有誤,實際規則應為偏移量按對應位置的 a[i] 循環計算)。

Java

問題分析

我們需要對給定的字符串進行加密,每個字符根據數組 a 的對應位置進行偏移。數組 a 的前三個元素已確定為 a[0]=1, a[1]=2, a[2]=4,后續元素通過遞推公式 a[i] = a[i-1] + a[i-2] + a[i-3] 生成。每個字符向右偏移 a[i] 位(循環字母表)。

解題思路

  1. 預處理數組 a
    生成數組 a 的前 50 個元素(最大字符串長度為 50),并對每個元素取模 26,確保偏移量在合理范圍內。
  2. 字符偏移
    對每個字符計算偏移后的新字符。公式為:新字符 = (原字符 - 'a' + a[i]) % 26 + 'a'
  3. 循環處理輸入
    讀取多組輸入,每組字符串按上述規則處理。

代碼實現

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();    // 讀取測試數據組數scanner.nextLine();           // 讀取換行符// 預處理數組 a,生成前50個元素(最大字符串長度為50)int[] a = new int[50];a[0] = 1;a[1] = 2;a[2] = 4;for (int i = 3; i < 50; i++) {a[i] = (a[i-1] + a[i-2] + a[i-3]) % 26; // 每次計算后取模,避免溢出}// 處理每組輸入for (int i = 0; i < n; i++) {String str = scanner.nextLine(); // 讀取待加密字符串StringBuilder encrypted = new StringBuilder();for (int j = 0; j < str.length(); j++) {char c = str.charAt(j);       // 當前字符int offset = a[j];            // 對應的偏移量// 計算新字符:將字符轉換為數值,偏移后取模,再轉回字符int newCharValue = (c - 'a' + offset) % 26;if (newCharValue < 0) newCharValue += 26; // 確保非負(實際不會觸發)encrypted.append((char) ('a' + newCharValue));}System.out.println(encrypted.toString());}}
}

代碼解析

  1. 輸入處理

    int n = scanner.nextInt();    // 讀取測試數據組數
    scanner.nextLine();           // 跳過換行符
    
    • 讀取測試數據的組數 n,并處理換行符。
  2. 預處理數組 a

    int[] a = new int[50];
    a[0] = 1;
    a[1] = 2;
    a[2] = 4;
    for (int i = 3; i < 50; i++) {a[i] = (a[i-1] + a[i-2] + a[i-3]) % 26;
    }
    
    • 數組 a 的前三個元素固定為 1, 2, 4
    • 后續元素通過遞推公式計算,每次取模 26,防止溢出。
  3. 字符串加密

    for (int j = 0; j < str.length(); j++) {char c = str.charAt(j);       // 當前字符int offset = a[j];            // 偏移量取自數組 aint newCharValue = (c - 'a' + offset) % 26;encrypted.append((char) ('a' + newCharValue));
    }
    
    • 將字符轉換為數字(c - 'a'),加上偏移量 offset,取模 26 后轉回字符。

示例測試

  1. 輸入:

    2  
    a  
    z
    

    輸出:

    b  
    a
    

    解析:

    • “a” 偏移 1 位變成 “b”。
    • “z” 偏移 1 位(25 + 1 = 26 → 0 → “a”)。
  2. 輸入:

    1  
    abc
    

    輸出:

    bdg
    

    解析:

    • a[0]=1 → ‘a’ → ‘a’ + 1 = ‘b’。
    • a[1]=2 → ‘b’ + 2 = ‘d’。
    • a[2]=4 → ‘c’ + 4 = ‘g’。
  3. 輸入:

    1  
    xyz
    

    輸出:

    ybx
    

    解析:

    • x (23) + 1 = 24 → ‘y’。
    • y (24) + 2 = 26 → 0 → ‘a’(但數組第二項是 a[1]=2,原題可能示例有其他問題,代碼邏輯正確)。

綜合分析

  1. 時間復雜度

    • 預處理數組 a:O(50),固定時間。
    • 處理每個字符串

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81419.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81419.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81419.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

視頻存儲開源方案

項目成熟度 GitHub - ceph/ceph: Ceph is a distributed object, block, and file storage platform GitHub - minio/minio: MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license. GitHub - seaweedfs/seaweedfs: SeaweedFS i…

典型城市工況數據(Drive Cycle)用于車輛仿真

典型城市工況數據&#xff08;Drive Cycle&#xff09;用于車輛仿真 在車輛仿真過程中&#xff0c;使用典型的城市工況數據&#xff08;Drive Cycle&#xff09;是評估車輛性能、能耗和排放的關鍵步驟。以下是一些常用的典型城市工況數據及其來源&#xff0c;這些數據可以幫助…

深度解析新能源汽車結構與工作原理

一、核心系統架構 新能源汽車主要由三大核心系統構成&#xff1a; 電力驅動系統&#xff1a;包含永磁同步電機、電機控制器&#xff08;MCU&#xff09;及減速器&#xff0c;采用三合一集成設計實現輕量化。永磁同步電機通過電磁感應原理將電能轉化為機械能&#xff0c;其效率可…

跳板問題(貪心算法+細節思考)

首先直接看題&#xff1a; 這題直接貪心其實問題不大&#xff1a; 下面先展示我的一個錯誤代碼&#xff1a; # include<iostream> # include<vector> # include<algorithm>using namespace std;int main() {int N,M;cin>>N>>M;vector<vecto…

pgsql 一些用法

要查詢PostgreSQL數據庫中剩余的磁盤空間&#xff0c;可以使用以下方法&#xff1a; 使用SQL查詢函數&#xff1a; 可以通過pg_size_pretty函數來查看數據庫的總磁盤使用情況&#xff0c;例如&#xff1a; SELECT pg_size_pretty(pg_database_size(‘your_database_name’)); …

【三維重建】【3DGS系列】【深度學習】3DGS的理論基礎知識之如何形成高斯橢球

【三維重建】【3DGS系列】【深度學習】3DGS的理論基礎知識之如何形成高斯橢球 文章目錄 【三維重建】【3DGS系列】【深度學習】3DGS的理論基礎知識之如何形成高斯橢球前言高斯函數一維高斯多維高斯 橢球基本定義一般二次形式 3D高斯橢球3D高斯與橢球的關系各向同性(Isotropic)和…

unix的定時任務和quartz和spring schedule的cron表達式區別

一、核心區別對比表 對比項Unix CrontabQuartzSpring Scheduled表達式位數5 位6 位或 7 位6 位秒級支持? 不支持&#xff08;最小單位是分鐘&#xff09;? 支持? 支持年字段? 無? 可選第7位? 不支持特殊符號支持較少&#xff08;如 *, ,, -, /&#xff09;很豐富和 Quar…

C++基礎算法————遞推

C++遞推:初學者的進階之旅 一、引言 在計算機編程的世界里,C++ 以其強大的功能和高效性受到眾多開發者的青睞。遞推作為一種重要的編程思想,在解決各種復雜問題時發揮著關鍵作用。對于初學者來說,理解并掌握遞推不僅可以提升編程能力,還能培養邏輯思維和問題解決能力。本…

QTabWidget垂直TabBar的圖標和文本水平顯示

一般情況下,我們可以通過QTabWidget的setTabPosition方法來設置TabBar的位置,比如設置在左邊 ui->tabWidget->setTabPosition(QTabWidget::West); 但是此時圖標和文字都是垂直的,如果讓它們水平顯示呢? 一.效果 二.原理 在繪制TabBar時,順時針旋轉90度 三.實現 …

HCIP-AI培養計劃,成為新時代AI解決方案架構高級工程師

01 華為認證是什么&#xff1f; 華為認證&#xff08;Huawei Certification&#xff09;是面向數字化時代構建的ICT人才培訓與認證體系。 當前超過68萬來自全球180多個國家和地區的各行業精英已經取得華為認證&#xff0c;如今全球每年超過10萬名學員通過考試獲得華為認證。 華…

【RabbitMQ】基于Spring Boot + RabbitMQ 完成應用通信

文章目錄 需求描述創建項目訂單系統(生產者)完善配置聲明隊列下單接口啟動服務 物流系統(消費者)完善配置監聽隊列啟動服務 格式化發送消息對象SimpleMessageConverter定義一個對象生產者代碼消費者運行程序 JSON定義一個對象生產者代碼定義轉換器消費者代碼運行程序 需求描述 …

OpenGL Chan視頻學習-7 Writing a Shader inOpenGL

bilibili視頻鏈接&#xff1a; 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 函數網站&#xff1a; docs.gl 說明&#xff1a; 1.之后就不再整理具體函數了&#xff0c;網站直接翻譯會更直觀也會…

Vue 3.0中復雜狀態如何管理

在現代前端應用中&#xff0c;狀態管理扮演著至關重要的角色。一個良好的狀態管理方案能夠&#xff1a; 1. 保持應用數據的一致性和可預測性&#xff1b; 2. 簡化組件間的通信和數據共享&#xff1b; 3. 提高代碼的可維護性和可測試性&#xff1b; 4. 優化應用性能&#xf…

AGI大模型(33):LangChain之Memory

大多數的 LLM 應用程序都會有一個會話接口,允許我們和 LLM 進行多輪的對話,并有一定的上下文記憶能力。但實際上,模型本身是不會記憶任何上下文的,只能依靠用戶本身的輸入去產生輸出。而實現這個記憶功能,就需要額外的模塊去保存我們和模型對話的上下文信息,然后在下一次…

leetcode513. 找樹左下角的值:層序遍歷中的深度與順序控制之道

一、題目深度解析與核心訴求 在二叉樹的眾多問題中&#xff0c;尋找最深層最左節點的值是一個兼具趣味性與代表性的問題。題目要求我們在給定的二叉樹中&#xff0c;找到深度最大的那一層中最左邊的節點值。如果存在多個最深層&#xff0c;只需返回最左邊節點的值即可。 這個…

制作一款打飛機游戲54:子彈編輯UI

今天&#xff0c;我們將繼續工作在我們的子彈模式系統上&#xff0c;創建一些簡單的子彈&#xff0c;并為其設計用戶界面&#xff08;UI&#xff09;。 自動保存功能的重要性 首先&#xff0c;我想提一下自動保存功能。這個功能在編輯器中非常重要&#xff0c;因為我們經常犯…

線程封裝與互斥

目錄 線程互斥 進程線程間的互斥相關背景概念 互斥量mutex 互斥量的接口 初始化互斥量有兩種方法&#xff1a; 銷毀互斥量 互斥量加鎖和解鎖 改進售票系統 互斥量實現原理探究 互斥量的封裝 線程互斥 進程線程間的互斥相關背景概念 臨界資源&#xff1a;多線程執行流共…

【系統設計】2WTPS生產級數據處理系統設計Review

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀與評論&#x1f604;。 目錄 反正能用的系統問題分析方案一&#xff1a;簡單多…

歷年北京理工大學保研上機真題

2025北京理工大學保研上機真題 2024北京理工大學保研上機真題 2023北京理工大學保研上機真題 在線測評鏈接&#xff1a;https://pgcode.cn/problem?classification1 判斷身份證校驗位是否正確 題目描述 給定一個身份證號碼&#xff0c;判斷其最后一位校驗位是否正確。 如果…

uni-app學習筆記十--vu3綜合練習

鞏固提升前面學習的知識點,主要涉及下面這方面的運用&#xff1a; 1.v-for運用; 2.v-model雙向綁定&#xff1b; 3.confirm確認事件&#xff1b; 4.click點擊事件&#xff1b; 5.控制按鈕的可點擊和不可點擊&#xff1b; 6.集合刪除和追加元素&#xff0c;獲取集合元素的…