L1-7 統一命名規范(java)

你所在的公司剛剛招收了幾位程序員,然而這些程序員之前在不同的公司工作,所以他們習慣的變量命名規范可能存在差異,需要讓他們都習慣公司要求的命名規范,然而這樣可能會降低他們的工作效率。

你的上司找到了你,希望你能編寫統一命名規范的程序,確保效率不降低的前提下,統一項目變量的命名規范。

現在已經知道公司中只會存在以下三種命名規范:

  • 駝峰(Camel),單詞之間沒有分隔符,第一個單詞首字母小寫,其余單詞首字母大寫,其余字母小寫,例如?userName
  • 帕斯卡(Pascal),單詞之間沒有分隔符,所有單詞首字母大寫,其余字母小寫,例如?UserName?;
  • 下劃線(Snake),單詞之間用下劃線?_?分隔,所有字母小寫,例如?user_name?。

輸入格式:

第一行輸入一個整數 N(1≤N≤100) 和一個字符串 T ,分別表示變量名的數量和最后統一的命名規范,其中命名規范只存在 CamelPascalSnake 三種。

接下來 N 行每行輸入一個只包含大小寫字母和下劃線的字符串 Si?(1≤∣Si?∣≤50) ,表示第 i 個變量名,命名方式為 CamelPascalSnake 中的一種。

輸出格式:

每一行輸出一個字符串,表示第 i 個變量統一成命名規范 T 后的變量名。

輸入樣例:

4 Snake
userName
Password
background_color
text

輸出樣例:

user_name
password
background_color
text

代碼長度限制

16 KB

時間限制

400 ms

內存限制

64 MB

棧限制

8192 KB

代碼示例:

import java.util.*;
public class Main{public static void main(String args[]){Scanner reader = new Scanner(System.in);int n = reader.nextInt();String type = reader.next();for(int i=0;i<n;i++){String s = reader.next();List<String> words = toWords(s);System.out.println(toLines(words,type));}}private static List<String> toWords(String s) {List<String> words = new ArrayList<>();if(s.contains("_")){String[] split = s.split("_");words.addAll(Arrays.asList(split));} else {if(!s.isEmpty()){int index = 0;for(int i=1; i<s.length(); i++){if(Character.isUpperCase(s.charAt(i))){words.add(s.substring(index,i));index = i;}}words.add(s.substring(index));}}return words;}private static String toLines(List<String> words,String type) {StringBuilder s = new StringBuilder();switch (type) {case "Snake" -> {for (int i = 0; i < words.size(); i++) {if (i >= 1) {s.append("_");}s.append(words.get(i).toLowerCase());}} case "Camel" -> {s.append(words.get(0).toLowerCase());for (int i = 1; i < words.size(); i++) {s.append(Character.toUpperCase(words.get(i).charAt(0)));s.append(words.get(i).substring(1).toLowerCase());}}case "Pascal" -> {for (String word : words) {s.append(Character.toUpperCase(word.charAt(0)));s.append(word.substring(1).toLowerCase());}}}return s.toString();}
}

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

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

相關文章

Flexus應用服務器L實例、X實例以及ECS(彈性計算服務)之間的區別及其適用場景

為了更好地理解Flexus應用服務器L實例、X實例以及ECS&#xff08;彈性計算服務&#xff09;之間的區別及其適用場景&#xff0c;下面我將通過具體的例子來說明每種類型的使用情況。 1. Flexus L實例 特點: 針對高并發和負載均衡進行了優化。它可能包括更快的網絡接口、更高效…

WebRTC中音視頻服務質量QoS之RTT衡量網絡往返時延的加權平均RTT計算機制?詳解

WebRTC中音視頻服務質量QoS之RTT衡量網絡往返時延加權平均RTT計算機制?的詳解 WebRTC中音視頻服務質量QoS之RTT衡量網絡往返時延加權平均RTT計算機制?的詳解 WebRTC中音視頻服務質量QoS之RTT衡量網絡往返時延加權平均RTT計算機制?的詳解前言一、 RTT 網絡往返時延的原理?1、…

odbus TCP轉Modbus RTU網關快速配置案例

Modbus TCP 轉Modbus RTU網關快速配置案例 在工業自動化領域&#xff0c;Modbus 協議以其簡潔和高效而著稱&#xff0c;成為眾多設備通信的首選。 隨著技術的發展和應用場景的變化&#xff0c;Modbus 協議也發展出了不同的版本&#xff0c;其中 Modbus TCP 和 Modbus RTU 是兩種…

《高效遷移學習:Keras與EfficientNet花卉分類項目全解析》

從零到精通的遷移學習實戰指南&#xff1a;以Keras和EfficientNet為例 一、為什么我們需要遷移學習&#xff1f; 1.1 人類的學習智慧 想象一下&#xff1a;如果一個已經會彈鋼琴的人學習吉他&#xff0c;會比完全不懂音樂的人快得多。因為TA已經掌握了樂理知識、節奏感和手指…

WSL2 Ubuntu安裝GCC不同版本

WSL2 Ubuntu安裝GCC不同版本 介紹安裝gcc 7.1方法 1&#xff1a;通過源碼編譯安裝 GCC 7.1步驟 1&#xff1a;安裝編譯依賴步驟 2&#xff1a;下載 GCC 7.1 源碼步驟 3&#xff1a;配置和編譯步驟 4&#xff1a;配置環境變量步驟 5&#xff1a;驗證安裝 方法 2&#xff1a;通過…

淘寶API vs 爬蟲:合規獲取實時商品數據的成本與效率對比

以下是淘寶 API 和爬蟲在合規獲取實時商品數據方面的成本與效率對比&#xff1a; 成本對比 淘寶 API 開發成本&#xff1a;需要申請開發者賬號并獲取 API 權限&#xff0c;部分敏感或高頻訪問的接口可能需要額外的審核或付費。開發過程中需要按照平臺規定進行編程&#xff0c;相…

Android 手機啟動過程

梳理 為了梳理思路&#xff0c;筆者畫了一幅關于 Android 手機啟動的過程圖片內容純屬個人見解&#xff0c;如有錯誤&#xff0c;歡迎各位指正

【Linux】:封裝線程

朋友們、伙計們&#xff0c;我們又見面了&#xff0c;本期來給大家帶來封裝線程相關的知識點&#xff0c;如果看完之后對你有一定的啟發&#xff0c;那么請留下你的三連&#xff0c;祝大家心想事成&#xff01; C 語 言 專 欄&#xff1a;C語言&#xff1a;從入門到精通 數據結…

正則表達式全解析 + Java常用示例

目錄 一、正則表達式基礎&#xff08;一&#xff09;元字符&#xff08;二&#xff09;字符集&#xff08;三&#xff09;量詞 二、正則表達式常用示例&#xff08;一&#xff09;驗證郵箱格式&#xff08;二&#xff09;驗證電話號碼格式&#xff08;三&#xff09;提取網頁中…

LoRa數傳、點對點通信、Mesh網絡、ZigBee以及圖傳技術的區別和特點

以下是LoRa數傳、點對點通信、Mesh網絡、ZigBee以及圖傳技術的區別和特點&#xff1a; 1.LoRa數傳? 特點&#xff1a;LoRa是一種基于擴頻技術的低功耗廣域網&#xff08;LPWAN&#xff09;通信技術&#xff0c;具有傳輸距離遠&#xff08;城市環境可達2-5公里&#xff0c;鄉村…

星越L_三角指示牌及危險警示燈使用

目錄 1.打開危險警告燈 2.取出反光背心穿上 3.取出指示牌 4.放置三角指示牌。 1.打開危險警示燈 2.取出反光背心穿上 3.取出指示牌

AI與人的智能,改變一生的思維模型【7】易得性偏差

目錄 **易得性偏差思維模型&#xff1a;大腦的「熱搜算法」與反操縱指南****病毒式定義&#xff1a;你的大腦正在被「熱搜」劫持****四大核心攻擊路徑與史詩級案例****1. 信息過載時代的「認知短路」****2. 媒體放大器的「恐怖濾鏡」****3. 個人經驗的「數據暴政」****4. 社交繭…

Jmeter的簡單使用

前置工作 確保java8 版本以上jmeter下載路徑&#xff08;選擇Binaries&#xff09;&#xff1a;https://jmeter.apache.org/download_jmeter.cgi直接解壓&#xff0c;找到bin下面的文件&#xff1a;jmeter.bat&#xff08;可選&#xff09;漢化&#xff0c;修改 jmeter.proper…

MyBatis源碼分析の配置文件解析

文章目錄 前言一、SqlSessionFactoryBuilder1.1、XMLConfigBuilder1.2、parse 二、mappers標簽的解析2.1、cacheElement2.1.1、緩存策略 2.2、buildStatementFromContext2.2.1、sql的解析 前言 本篇主要介紹MyBatis源碼中的配置文件解析部分。MyBatis是對于傳統JDBC的封裝&…

golang快速上手基礎語法

變量 第一種&#xff0c;指定變量類型&#xff0c;聲明后若不賦值&#xff0c;使用默認值0 package mainimport "fmt"func main() {var a int //第一種&#xff0c;指定變量類型&#xff0c;聲明后若不賦值&#xff0c;使用默認值0。fmt.Printf(" a %d\n"…

Java中的訪問修飾符有哪些

在 Java 中&#xff0c;訪問修飾符&#xff08;Access Modifiers&#xff09;用于控制類、方法、變量和構造器的訪問權限。Java 提供了四種訪問修飾符&#xff0c;分別是&#xff1a; publicprotecteddefault&#xff08;包私有&#xff0c;沒有顯式修飾符&#xff09;private…

【公務員考試】高效備考指南

高效備考指南&#xff1a;從計劃制定到心態調整的全面攻略 公務員考試競爭激烈&#xff0c;備考過程既需要科學規劃&#xff0c;也需要持之以恒的努力。結合多位高分考生的經驗與專業機構的指導&#xff0c;本文整理了一套系統化的備考策略&#xff0c;涵蓋目標設定、學習方法…

工程實踐:如何使用SU17無人機來實現室內巡檢任務

阿木實驗室最近發布了科研開發者版本的無人機SU17&#xff0c;該無人機上集成了四目視覺&#xff0c;三維激光雷達&#xff0c;云臺吊艙&#xff0c;高算力的機載計算機&#xff0c;是一個非常合適的平臺用于室內外巡檢場景。同時阿木實驗室維護了多個和無人機相關的開源項目。…

強大的CSS變量

在 CSS 中&#xff0c;變量&#xff08;Custom Properties&#xff09; 允許你定義可重用的值&#xff0c;方便在整個樣式表中使用和修改。CSS 變量的基本語法如下&#xff1a; 1. 定義 CSS 變量 CSS 變量通常在 :root 偽類中定義&#xff0c;以便它們可用于整個文檔&#xf…

藍橋杯嵌入式賽道復習筆記1(led點亮)

前言 基礎的文件創建&#xff0c;參賽資源代碼的導入&#xff0c;我就不說了&#xff0c;直接說CubeMX的配置以及代碼邏輯思路的書寫&#xff0c;在此我也預祝大家人人拿國獎 理論講解 原理圖簡介 1.由于存在PC8引腳到PC15引腳存在沖突&#xff0c;那么官方硬件給的解決方案…